許多的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版本之後的基於註解的控制器可以同時處理多個動作,並且無需實現任何接口,更加靈活。)