2.3.2 Spring MVC的DispatcherServlet
在许多的MVC
框架中,都包含一个用于调度控制的Servlet
。 Spring MVC
也提供了个名为org.springframework.web.servlet. DispatcherServlet
的Servlet
充当前端控制器,所有的请求驱动都围绕这个DispatcherServlet
来分派请求。DispatcherServlet
是一个Servlet
(它继承自HttpServlet
基类),因此使用时需要把它配置在Web
应用的部署描述符web.xml
文件当中,配置信息如下:
1 | <!-- 定义Spring MVC的前端控制器 --> |
以上是标准Java EE Servlet
的配置。配置了一个DispatcherServlet
,该Servlet
在Web
应用程序启动时立即加载,
指定Spring MVC配置文件的路径
通过servlet-name元素指定配置文件的路径
DispatcherServlet
加载时会需要一个Spring MVC
的配置文件,默认情况下,应用会去应用程序文件夹下的WEB-INF
文件夹下査找对应的[servlet-name]-servlet.xml
文件,例如本例的servlet-name
元素的值是springmvc
,则默认查找的就是/WEB-INF/springmvc-servlet.xml
。
通过init-param元素指定配置文件的路径
可以把Spring MVC
的配置文件放到应用程序文件夹中的任何地方,用servlet
元素的init-param
子元素进行描述,
- 本例的
param-name
元素的值contextConfigLocation
表示参数名称, param-value
元素的值/WEB-INF/springmvc-config.xml
则表示Spring MVC
的配置文件路径和名称。
则Dispatcher Servlet
会查找/WEB-INF/springmvc-config.xml
文件,作为Spring MVC
的配置文件,
Spring MVC配置文件的解析
解析Spring MVC
配置文件的内容并根据文件配置信息创建一个WebApplicationContext
容器对象,也称为上下文环境。 WebApplicationContext
继承自ApplicationContext
容器。它的初始化方式和BeanFactory
、 ApplicationContext
有所区别,因为WebApplicationContext
需要ServletContext
实例,也就是说,它必须在拥有Web
容器的前提下才能完成启动Spring Web
应用上下文的工作。有了WebApplicationContext
容器,开发者就可以很自然地使用Spring
的IOC
、AOP
等其他功能了.