Spring的DispatcherServlet继承自
HttpServlet,所以本质上是一个Servlet。DispatcherServlet负责接收请求而后转发给对应的Controller进行处理。
web
在这里关键是要理解DispatcherServlet所在的context和全局context的关系。全局Context是由ContextLoaderListener初始化的,通常加载的是项目基础,通用的Bean。Spring MVC能够有多个DispatcherServlet实例,每个都有本身独立的WebApplicationContext,这里面主要是Controller,HandlerMapping,ViewResolver。全局WebApplicationContext与DispatcherServlet的WebApplicationContext之间是父子关系,子能够获取到,覆写父中定义的Bean,反之不行。spring
app 一个完整的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。url