许多的MVC框架中,都还有一个用于调度控制的Servlet. springMVC也提供了一个名为org…….DispatcherServlet的servlet
充当前段控制器,且所有的驱动请求都围绕着DispatcherServlet来分派请求。
DispatcherServlet是一个Servlet(它继承自HttpServlet基类),因此使用时需要将他配置在web应用的部署描述符web.xml
中,具体配置如下:(红色代码部分)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<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>
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
以上是一个标准的javaEE Servlet的配置,该Servlet在web应用程序启动时立即加载,且DispatcherServlet加载时需要一个
SpringMVC的配置文件,默认情况下会去找web-inf下[servlet-name]-servlet.xml文件,如以上文件中的<servlet-name>是
springmvc,那么默认查找的就是/WEB-INF/springmvc-servlet.xml。(默认)
当然也可以吧SpringMVC的配置文件放到项目中的任何地方,用servlet的init-param子元素描述,本例中的param-name
元素的值标识参数名称,param-value的值标识SpringMVC配置文件的路径名称。则DispatcherServlet会去找
/WEB-INF/springmvc-config.xml
作为SpringMCV的配置文件,解析该文件并根据文件配置信息创建一个WebApplicationContext容器对象-(也成上下文环境),WebApplicationContext继承自ApplicationContext容器,他的初始化方式和BeanFactory、ApplicationContext有所区别,因为WebApplicationContext需要ServletContext实例,也就是说,必须有一个web容器的前提下才能启动Spring Web应用上下文的工作,有了WebApplicationContext容器就可以使用spring的IOC、AOP等功能了。
------------------------------------------------------------------------------------------------------
基于Controller接口的控制器
DispatcherServlet在spring中充当前端控制器的角色,他的核心功能是分发请求,请求会分发给对用的处理的java类,SpringMVC中称Handle。在Spring2.5之前,开发一个Handle唯一的方法就是实现Controller接口并实现其中的方法
ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception
(注:Controller接口的实现类只能处理一个单一请求动作,在2.5版本之后的基于注解的控制器可以同时处理多个动作,并且无需实现任何接口,更加灵活。)