SpringMVC--DispatcherServlet 爱被打了一巴掌 2022-04-03 09:49 201阅读 0赞 DispatcherServlet是SpringMVC的核心控制器,也就是前端控制器。 作用*:* DispatcherServlet作为SpringMVC的前端控制器,负责接收用户的请求,并根据用户的请求返回相应的视图给用户。 1.DispatcherServlet是配置在web.xml中的 <servlet> <servlet-name>SpringServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> **load-on-startup****:**表示启动容器时初始化该Servlet。 如上配置spring web mvc将加载spring-mvc.xml 的配置来初始化上下文。DispatcherServlet初始化的上下文加载的bean只是对Spring Web MVC有效的bean,并不是所有的都有效。(如:Controller ,HandlerMapping,与web相关的组织) 2.上下文关系 Spring集成Web环境的通用配置,在web.xml中置 <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath\*:/spring/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> ContextLoaderListener初始化的上下文,加载的Bean是对于整个应用程序共享的。一般用于加载除web层的bean,以便与其他任何web框架集成。 3. contextLoaderListener初始化的上下文和dispatcherServlet初始化的上下文关系: ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpeWlqaWFueGlhbg_size_16_color_FFFFFF_t_70][] 从图中可知: 1.contextLoaderListener初始化的上下文加载的bean是对于整个应用程序共享的,不管是使用什么表现层技术。常用的如DAO层,Service层; 2.dispatcherServlet初始化的上下文加载的bean是只对spring Web MVC有效的bean,如Controller、handlerMapping、HandlerAdapter等等,该初始化上下文应该只加载web相关组件。 4.因此在配置扫描组件是一定要放在contextLoaderListener 初始化的上下文中,这样才能避免非WEB的bean不能扫描的问题。 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3lpeWlqaWFueGlhbg_size_16_color_FFFFFF_t_70]: /images/20220403/385bdad7fe284a798a0420addd6ad131.png
还没有评论,来说两句吧...