spring-DispatcherServlet

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章