(二)SpringMVC核心控制器


一、如何配置 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>來自定義文件名稱和位置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM