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域