Spring MVC Dispatcher介绍
Spring的
DispatcherServlet继承自
HttpServlet,因此本质上是一个Servlet。DispatcherServlet负责接收请求然后转发给对应的Controller进行处理。
WebApplicationContext的层级关系
在这里关键是要理解DispatcherServlet所在的context和全局context的关系。全局Context是由ContextLoaderListener初始化的,一般加载的是项目基础,通用的Bean。Spring MVC可以有多个DispatcherServlet实例,每一个都有自己独立的WebApplicationContext,这里面主要是Controller,HandlerMapping,ViewResolver。全局WebApplicationContext与DispatcherServlet的WebApplicationContext之间是父子关系,子可以获取到,覆写父中定义的Bean,反之不行。
配置
一个完整的spring在web.xml中的配置如下:
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
注:DispatcherServlet的配置文件默认为WEB-INF下的xxx-servlet.xml,xxx为web.xml中配置的servet name,本例中是dispatcher。
来源:oschina
链接:https://my.oschina.net/u/1387193/blog/283676