1. 程式人生 > >SpringMVC架構的底層原理分析

SpringMVC架構的底層原理分析

SpringMVC的請求過程分析示意圖

這裡寫圖片描述

步驟如下:

第一步:發起請求到前端控制器(DispatcherServlet)

第二步:前端控制器請求HandlerMapping(處理器對映器)查詢 Handler
可以根據xml配置、註解進行查詢

第三步:處理器對映器(HandlerMapping)向前端控制器返回Handler

第四步:前端控制器呼叫處理器介面卡去執行Handler

第五步:處理器介面卡去執行Handler

第六步:Handler執行完成給介面卡返回ModelAndView

第七步:處理器介面卡向前端控制器返回ModelAndView
ModelAndView是springmvc框架的一個底層物件,包括 Model和view

第八步:前端控制器請求檢視解析器去進行檢視解析

第九步:檢視解析器向前端控制器返回View

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

第十一步:前端控制器向用戶響應結果

五大元件:

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

2、處理器對映器HandlerMapping(不需要程式設計師開發)
作用:根據請求的url查詢Handler

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

4、處理器Handler(需要程式設計師開發)
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣介面卡才可以去正確執行Handler

5、檢視解析器View resolver(不需要程式設計師開發)
作用:進行檢視解析,根據邏輯檢視名解析成真正的檢視(view)

6、檢視View(需要程式設計師開發jsp)
View是一個介面,實現類支援不同的View型別(jsp、freemarker、pdf…)

總結的想法思路引導:

(1),從前端請求分發器開始就一直圍繞著去尋求Handler去處理

1, 因為請求的事url,所以先通過url去尋找HandlerMapping處理對映器去請求Handler,然後返回給前端控制器一個Handler(但是他不知道該交給哪個Handler去處理)

2, 所以前端控制器又去找HandlerAdaper(處理器介面卡)去請求具體的Handler去處理,這次直接就找到了哪個屬於HandlerBoss(把這個看成是老闆)處理的那個Handler(把這個看成老闆的各個部門專門負責不同的部門處理)來去處理,這個處理之後返回的是一個Model和View物件(也就是以後的(controller層)

3, 把這個Controller層的Model和View都返回給前端控制器,他再去請求檢視解析器,然後返回,再然後返回給View檢視(檢視渲染將模型資料填充到request域