1. 程式人生 > 遊戲資訊 >【以撒的結合】mod設定:NutJWR(未製作)

【以撒的結合】mod設定:NutJWR(未製作)

概要

  • 準備階段
  • 匹配階段
  • 執行階段

準備階段

  1. 當在Web容器第一次用到 前端控制器DispatcherServlet 的時候,會建立其物件並執行init方法
  2. init方法內會建立Spring Web容器,並呼叫容器refresh方法
  3. refersh過程中會建立並初始化SpringMVC中的重要元件,例如檔案解析器MultipartResolver,處理器對映器HandlerMapping,處理器介面卡HandlerAdapter,異常處理器HandlerExceptionResolver、檢視解析器ViewResolver 等
  4. 容器初始化後,會將上一步初始化好的重要元件賦值給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.如果控制器方法標註了 @ResponseBody 註解,則在第 2 步,就會生成 json 結果,並標記 ModelAndView 已處理,這樣就不會執行第 3 步的檢視渲染