Spring MVC執行流程


在學習框架之前,首先來了解一下 Spring MVC 框架的整體請求流程和使用到的 API 類。

Spring MVC 框架是高度可配置的,包含多種視圖技術,例如 JSP、FreeMarker、Tiles、iText 和 POI。Spring MVC 框架並不關心使用的視圖技術,也不會強迫開發者只使用 JSP。

Spring MVC 執行流程

Spring MVC 執行流程如圖 1 所示。

Spring MVC執行流程
圖 1:Spring MVC執行流程

SpringMVC 的執行流程如下。

  1. 用戶點擊某個請求路徑,發起一個 HTTP request 請求,該請求會被提交到 DispatcherServlet(前端控制器);
  2. 由 DispatcherServlet 請求一個或多個 HandlerMapping(處理器映射器),並返回一個執行鏈(HandlerExecutionChain)。
  3. DispatcherServlet 將執行鏈返回的 Handler 信息發送給 HandlerAdapter(處理器適配器);
  4. HandlerAdapter 根據 Handler 信息找到並執行相應的 Handler(常稱為 Controller);
  5. Handler 執行完畢后會返回給 HandlerAdapter 一個 ModelAndView 對象(Spring MVC的底層對象,包括 Model 數據模型和 View 視圖信息);
  6. HandlerAdapter 接收到 ModelAndView 對象后,將其返回給 DispatcherServlet ;
  7. DispatcherServlet 接收到 ModelAndView 對象后,會請求 ViewResolver(視圖解析器)對視圖進行解析;
  8. ViewResolver 根據 View 信息匹配到相應的視圖結果,並返回給 DispatcherServlet;
  9. DispatcherServlet 接收到具體的 View 視圖后,進行視圖渲染,將 Model 中的模型數據填充到 View 視圖中的 request 域,生成最終的 View(視圖);
  10. 視圖負責將結果顯示到瀏覽器(客戶端)。

Spring MVC接口

Spring MVC 涉及到的組件有 DispatcherServlet(前端控制器)、HandlerMapping(處理器映射器)、HandlerAdapter(處理器適配器)、Handler(處理器)、ViewResolver(視圖解析器)和 View(視圖)。下面對各個組件的功能說明如下。

1)DispatcherServlet

DispatcherServlet 是前端控制器,從圖 1 可以看出,Spring MVC 的所有請求都要經過 DispatcherServlet 來統一分發。DispatcherServlet 相當於一個轉發器或中央處理器,控制整個流程的執行,對各個組件進行統一調度,以降低組件之間的耦合性,有利於組件之間的拓展。

2)HandlerMapping

HandlerMapping 是處理器映射器,其作用是根據請求的 URL 路徑,通過注解或者 XML 配置,尋找匹配的處理器(Handler)信息。

3)HandlerAdapter

HandlerAdapter 是處理器適配器,其作用是根據映射器找到的處理器(Handler)信息,按照特定規則執行相關的處理器(Handler)。

4)Handler

Handler 是處理器,和 Java Servlet 扮演的角色一致。其作用是執行相關的請求處理邏輯,並返回相應的數據和視圖信息,將其封裝至 ModelAndView 對象中。

5)View Resolver

View Resolver 是視圖解析器,其作用是進行解析操作,通過 ModelAndView 對象中的 View 信息將邏輯視圖名解析成真正的視圖 View(如通過一個 JSP 路徑返回一個真正的 JSP 頁面)。

6)View

View 是視圖,其本身是一個接口,實現類支持不同的 View 類型(JSP、FreeMarker、Excel 等)。

以上組件中,需要開發人員進行開發的是處理器(Handler,常稱Controller)和視圖(View)。通俗的說,要開發處理該請求的具體代碼邏輯,以及最終展示給用戶的界面。

注意:由於 Spring MVC 結構比較復雜,所以學習的時候也要掌握學習方法。首先要明確 Spring MVC 是一個工具,既然是工具,那么我們就需要先掌握工具的使用方法,不要陷入細節中,深入淺出,慢慢通過實際運用來加深對其的理解。

 

From

http://c.biancheng.net/spring_mvc/process.html

 


免責聲明!

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



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