2.3.2 Spring MVC的DispatcherServlet

2.3.2 Spring MVC的DispatcherServlet

DispatcherServlet

在许多的MVC框架中,都包含一个用于调度控制的Servlet
Spring MVC也提供了个名为org.springframework.web.servlet.DispatcherServletServlet充当前端控制器,所有的请求驱动都围绕这个DispatcherServlet来分派请求

DispatcherServlet配置

DispatcherServlet是一个Servlet(它继承自HttpServlet基类),因此使用时需要把它配置在Web应用的部署描述符web.xml文件当中,配置信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- 定义Spring MVC的前端控制器 -->
<servlet>
<!-- 默认查找的是:/WEB-INF/springmvc-servlet.xml -->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 通过 init-param元素 指定配置文件的路径 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 让Spring MVC的前端控制器拦截所有请求 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

以上是标准Java EE Servlet的配置。配置了一个DispatcherServlet,该ServletWeb应用程序启动时立即加载,

指定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容器。它的初始化方式和BeanFactoryApplicationContext有所区别,因为WebApplicationContext需要ServletContext实例,也就是说,它必须在拥有Web容器的前提下才能完成启动Spring Web应用上下文的工作。有了WebApplicationContext容器,开发者就可以很自然地使用SpringIOCAOP等其他功能了.