spring-MVC原始碼解讀(一)

weixin_33763244發表於2018-03-18

1、mcv整體架構和流程

圖片描述

  • 使用者傳送請求至前端控制器 DispatcherServlet
  • DispatcherServlet 收到請求呼叫 HandlerMapping 處理器對映器
  • 處理器對映器根據請求 url 找到具體的處理器,生成處理器物件及處理器攔截器(如果有則生成)一併返回給 DispatcherServlet
  • DispatcherServlet 通過 HandlerAdapter 處理器介面卡呼叫處理器Handler
  • Handler執行處理器鏈(Controller,也叫後端控制器)
  • Controller 執行完成返回 ModelAndView
  • HandlerAdapter 將 controller 執行結果 ModelAndView 返回給 DispatcherServlet
  • DispatcherServlet 將 ModelAndView 傳給 ViewReslover 檢視解析器
  • ViewReslover 解析後返回具體 View
  • DispatcherServlet傳遞Model 對 View 進行渲染檢視(即將模型資料填充至檢視中)
  • DispatcherServlet 響應使用者

2、SpringMVC 框架元件概述

在 SpringMVC 的各個元件中,處理器對映器、處理器介面卡、檢視解析器稱為 SpringMVC 的三大元件。

  • DispatcherServlet:前端控制器

    使用者請求到達前端控制器,它就相當於 MVC 模式中的 C 層,DispatcherServlet 是整個流程控制的中心,由它呼叫其它元件處理使用者的請求,DispatcherServlet 的存在降低了元件之間的耦合性。
  • HandlerMapping:處理器對映器

    HandlerMapping 負責根據使用者請求 url 找到 Handler 處理器,SpringMVC 提供了不同的對映器實現不同的對映方式,如配置檔案方式、實現介面方式、註解方式等。
  • Handler:處理器

    Handler 是繼 DispatcherServlet 前端控制器的後端控制器,在 DispatcherServlet 的控制下 Handler 對具體的使用者請求進行處理。由於 Handler 涉及到具體的使用者業務請求,所以一般情況需要程式設計師根據業務需求開發 Handler 。
  • HandlAdapter:處理器介面卡

    通過 HandlerAdapter 對處理器進行執行,這是介面卡模式的應用,通過擴充套件介面卡可以對更多型別的處理器進行執行。
  • ViewResolver:檢視解析器

    View Resolver 負責將處理結果生成 View 檢視,View Resolver 首先根據邏輯檢視名解析成物理檢視名即具體的頁面地址,再生成View 檢視物件,最後對View進行渲染將處理結果通過頁面展示給使用者。
  • View:檢視

    SpringMVC 框架提供了很多的 View 檢視型別的支援,w而我們開發中最常用的檢視是 jsp 。

3、SpringMVC 配置詳解

springmvc.xml

  • 配置元件掃描器

    <context:component-scan base-package="com.springmvc.controller" />
  • 配置處理器對映器

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
  • 配置處理器介面卡

    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
  • 配置註解驅動

    <mvc:annotation-driven />
  • 配置檢視解析器

    <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!-- 配置邏輯檢視的字首 -->
    <property name="prefix" value="/jsp/" />
    <!-- 配置邏輯檢視的字尾 -->
    <property name="suffix" value=".jsp" />
    </bean>
  • 最終 jsp 實體地址:字首 + 邏輯檢視名 + 字尾,以上是springMvc的基本配置骨架,其中的元件都可以自由詳細配置。

相關文章