SpringMVC 執行流程:

  1. 使用者傳送請求至前端控制器 DispatcherServlet

  2. DispatcherServlet 收到請求呼叫處理對映器 HandlerMapping

  3. 處理對映器根據請求 url 找到具體的處理器,生成處理器執行鏈 HandlerExecutionChain(包括處理器物件和處理器攔截器)一併返回給 DispatcherServlet

  4. DispatcherServlet 根據處理器 Handler 獲取處理器介面卡 HandlerAdapter ,執行 HandlerAdapter 處理一系列的操作,如:引數封裝,資料格式轉換,資料驗證等操作

  5. 執行處理器 Handler (Controller,也叫頁面控制器)

  6. Handler 執行完成返回 ModelAndView

  7. HandlerAdapter 將 Handler 執行結果 ModelAndView 返回到 DispatcherServlet

  8. DispatcherServlet 將 ModelAndView 傳給 ViewReslover 檢視解析器

  9. ViewReslover 解析後返回具體 View

  10. DispatcherServlet 對 View 進行渲染檢視(即將模型資料 model 填充至檢視中)

  11. DispatcherServlet 響應使用者

元件說明:

  1. DispatcherServlet:前端控制器。使用者請求到達前端控制器,它就相當於 mvc 模式中的 c,DispatcherServlet是整個流程控制的中心,由它呼叫其它元件處理使用者的請求,DispatcherServlet 的存在降低了元件之間的耦合性,系統擴充套件性提高。

  2. HandlerMapping:處理器對映器。HandlerMapping 負責根據使用者請求的 url 找到 Handler ,即處理器。SpringMVC 提供了不同的對映器,實現不同的對映方式,根據一定的規則去查詢,例如:xml 配置方式,實現介面方式,註解方式等。

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

  4. HandlAdapter:處理器介面卡。通過 HandlerAdapter 對處理器進行執行,這是介面卡模式的應用,通過擴充套件介面卡可以對更多型別的處理器進行執行。

  5. ModelAndView:是 SpringMVC 的封裝物件,將 model 和 view 封裝在一起。

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

  7. View:是 SpringMVC 的封裝物件,是一個介面,SpringMVC 框架提供了很多的 View 檢視型別,包括:jspview,pdfview,jstlView、freemarkerView、pdfView等。一般情況下需要通過頁面標籤或頁面模版技術將模型資料通過頁面展示給使用者,需要由程式設計師根據業務需求開發具體的頁面。