1. 程式人生 > 其它 >Spring MVC 請求流程詳細介紹

Spring MVC 請求流程詳細介紹

Spring MVC是一種基於Web MVC設計模式的請求驅動型別的輕量級Web框架,即使用了MVC架構模式的思想,將Web層進行職責解耦,基於請求驅動指的就是使用"請求-響應"模型,框架的目的就是幫助我們簡化開發。Spring MVC在Web應用中充當控制層(Controller)的角色,對請求進行分發處理。Spring請求流程如下所示

具體步驟

  1. 首先使用者傳送請求到前端控制器,前端控制器根據請求資訊(如 URL)來決定選擇哪一個頁面控制器進行處理並把請求委託給它,即以前的控制器的控制邏輯部分,即圖中的 1、2 步驟。
  2. 頁面控制器接收到請求後,進行功能處理,首先需要收集和繫結請求引數到一個物件,這個物件在 Spring Web MVC 中叫命令物件,並進行驗證,然後將命令物件委託給業務物件進行處理,處理完畢後返回一個 ModelAndView(模型資料和邏輯檢視名),即圖中的 3、4、5 步驟。
  3. 前端控制器收回控制權,然後根據返回的邏輯檢視名,選擇相應的檢視進行渲染,並把模型資料傳入以便檢視渲染,即圖中的步驟 6、7;
  4. 前端控制器再次收回控制權,將響應返回給使用者,圖中的步驟 8,至此整個結束。

核心流程

具體步驟

1、發起請求到前端控制器(DispatcherServlet)

2、前端控制器請求HandlerMapping查詢 Handler(可以根據xml配置、註解進行查詢)

3、處理器對映器HandlerMapping向前端控制器返回Handler,HandlerMapping會把請求對映為HandlerExecutionChain物件(包含一個Handler處理器(頁面控制器)物件,多個HandlerInterceptor攔截器物件),通過這種策略模式,很容易新增新的對映策略

4、前端控制器呼叫處理器介面卡去執行Handler

5、處理器介面卡HandlerAdapter將會根據適配的結果去執行Handler

6、Handler執行完成給介面卡返回ModelAndView

7、處理器介面卡向前端控制器返回ModelAndView (ModelAndView是SpringMVC框架的一個底層物件,包括 Model和view)

8、前端控制器請求檢視解析器去進行檢視解析 (根據邏輯檢視名解析成真正的視jsp),通過這種策略很容易更換其他檢視技術,只需要更改檢視解析器即可

9、檢視解析器向前端控制器返回View

10、前端控制器進行檢視渲染 (檢視渲染將模型資料(在ModelAndView物件中)填充到request域)

11、前端控制器向用戶響應結果

元件介紹

下面對出現的一些元件進行詳細的介紹:

(1) 前端控制器DispatcherServlet。
  作用:接收請求,響應結果,相當於轉發器,中央處理器。有了DispatcherServlet減少了其它元件之間的耦合度。

(2) 處理器對映器HandlerMapping。
  作用:根據請求的url查詢Handler。

(3) 處理器介面卡HandlerAdapter。
  作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler。

(4) 處理器Handler。
  注意:編寫Handler時按照HandlerAdapter的要求去做,這樣介面卡才可以去正確執行Handler

(5) 檢視解析器ViewResolver。
  作用:進行檢視解析,根據邏輯檢視名解析成真正的檢視(view)

(6) 檢視View。
  注意:View是一個介面,實現類支援不同的View型別(jsp、freemarker、pdf…)

總結:需要我們開發的工作只有處理器 Handler 的編寫以及檢視比如JSP頁面的編寫。

-