【走近Spring】Spring MVC執行流程 FrameworkServlet、DispatcherServlet分析(processRequest、doDispatch)
阿新 • • 發佈:2021-12-10
問題剖析:
- 一個請求url是怎麼樣找到Handler進行處理的?
- 攔截器為何preHandler順序執行,postHandler就倒序執行呢?
- Spring MVC是怎麼樣去優雅的處理異常的?…...
請求處理流程:
瞭解之前,我們先巨集觀看看,一個請求達到Spring MVC,它的一個處理流程。
這裡我首先貼上一張非常權威的流程圖,也是Spring in Action這本書裡提供的,springmvc的核心元件和請求處理流程:
描述:
- DispatcherServlet是springmvc中的前端控制器(front controller),負責接收request並將request轉發給對應的處理元件。
- HanlerMapping是springmvc中完成url到controller對映的元件。DispatcherServlet接收request,然後從HandlerMapping查詢處理request的controller。
- Controller處理request,並返回ModelAndView物件,Controller是springmvc中負責處理request的元件(類似於struts2中的Action),ModelAndView是封裝結果檢視的元件
- ④ ⑤ ⑥:檢視解析器解析ModelAndView物件並返回對應的檢視給客戶端
下面這張圖更能描述處理的一些細節: