【以撒的結合】mod設定:NutJWR(未製作)
阿新 • • 發佈:2022-04-01
概要
- 準備階段
- 匹配階段
- 執行階段
準備階段
- 當在Web容器第一次用到 前端控制器DispatcherServlet 的時候,會建立其物件並執行init方法
- init方法內會建立Spring Web容器,並呼叫容器refresh方法
- refersh過程中會建立並初始化SpringMVC中的重要元件,例如檔案解析器MultipartResolver,處理器對映器HandlerMapping,處理器介面卡HandlerAdapter,異常處理器HandlerExceptionResolver、檢視解析器ViewResolver 等
- 容器初始化後,會將上一步初始化好的重要元件賦值給DispatcherServlet 的成員變數,留待後用
匹配階段
1.使用者傳送的請求統一到達前端控制器DispatcherServlet
2.DispatcherServlet 遍歷所有的HandlerMapping,找到與路徑匹配的處理器
- HandlerMapping有多個,每個HandlerMapping會放回不同的處理器物件,誰先匹配就返回誰的處理器。其中能識別@RequestMapping的優先順序最高
- 對應@RequestMapping的處理器是HandlerMethod,它包含了控制器物件和控制器方法資訊
- 其中路徑與處理器的對映關係在HandlerMapping初始化時就會建立好
3.將HandlerMethod連同匹配到的攔截器,生產呼叫鏈物件HandlerExecutionChain返回
4.遍歷HandlerAdapter,找到能處理HandlerMethod的介面卡物件,開始使用
執行階段
1.執行攔截器 preHandle
2.由HandlerAdapter呼叫HandlerMethod
- 呼叫前處理不同型別引數
- 呼叫後處理不同型別返回值
3.第2步沒有異常
- 返回ModelAndView
- 執行攔截器postHandle方法
- 解析檢視,得到View物件,進行檢視渲染
4.若第2步有異常,進入HandlerExceptionResolver異常處理流程
5.最後都會執行攔截器的afterCompletion方法
6.