1. 程式人生 > >(二)SpringMVC核心控制器

(二)SpringMVC核心控制器

mapping csdn 技術 獲取 exce 而且 prop https multipart

一、如何配置 Spring MVC 的核心控制器?

DispatcherServlet是前端控制器設計模式的實現,提供Spring Web MVC的集中訪問點,主要負責職責的分派。

配置 

 <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--指定配置文件的位置,默認“/WEB-INF/[servlet名字]-servlet.xml”。-->  
        <init-param>
<param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>

load-on-startup表示啟動容器時初始化該Servlet;

url-pattern表示哪些請求交給Spring Web MVC處理, “/” 是用來定義默認servlet映射的。也可以如“*.html”表示攔截所有以html為擴展名的請求。

DispatcherServlet的默認配置在DispatcherServlet.properties(和DispatcherServlet類在一個包下)中,而且是當Spring配置文件中沒有指定配置時使用的默認策略。

技術分享圖片

DispatcherServlet在啟動時會自動註冊這些默認的Bean,無需我們註冊,如果我們註冊了,默認的將不會註冊。因此我們入門案例中的BeanNameUrlHandlerMapping、SimpleControllerHandlerAdapter是不需要我們手動註冊的,DispatcherServlet默認會註冊這兩個Bean。裏面還有一些其他的默認Bean,我們可以自行去了解。

接下來我們了解一下Spring MVC需要的那些組件。

  二、Spring MVC 的核心控制器的作用是?

DispatcherServlet是前端控制器設計模式的實現,提供Spring Web MVC的集中訪問點,而且負責職責的分派,而且與Spring IoC容器無縫集成,從而可以獲得Spring的所有好處。 具體請參考第二章的圖2-1。

DispatcherServlet主要用作職責調度工作,本身主要用於控制流程,主要職責如下:

1、文件上傳解析,如果請求類型是multipart將通過MultipartResolver進行文件上傳解析;

2、通過HandlerMapping,將請求映射到處理器(返回一個HandlerExecutionChain,它包括一個處理器、多個HandlerInterceptor攔截器);

3、通過HandlerAdapter支持多種類型的處理器(HandlerExecutionChain中的處理器);

4、通過ViewResolver解析邏輯視圖名到具體視圖實現;

5、本地化解析;

6、渲染具體的視圖等;

7、如果執行過程中遇到異常將交給HandlerExceptionResolver來解析。

從以上我們可以看出DispatcherServlet主要負責流程的控制(而且在流程中的每個關鍵點都是很容易擴展的)。

三、默認情況下 Spring MVC 的核心控制器從哪裏獲取配置文件?

該DispatcherServlet默認使用WebApplicationContext作為上下文,SpringMVC默認配置文件為“/WEB-INF/[servlet名字]-servlet.xml”。可以通過<init-param>來自定義文件名稱和位置。

(二)SpringMVC核心控制器