springMVC請求流程詳解

木叔發表於2016-11-25

SpringMVC框架是一個基於請求驅動的Web框架,並且使用了‘前端控制器’模型來進行設計,再根據‘請求對映規則’分發給相應的頁面控制器進行處理。

(一)整體流程

 

具體步驟:

1、  首先使用者傳送請求到前端控制器,前端控制器根據請求資訊(如 URL)來決定選擇哪一個頁面控制器進行處理並把請求委託給它,即以前的控制器的控制邏輯部分;圖中的 1、2 步驟;

2、  頁面控制器接收到請求後,進行功能處理,首先需要收集和繫結請求引數到一個物件,這個物件在 Spring Web MVC 中叫命令物件,並進行驗證,然後將命令物件委託給業務物件進行處理;處理完畢後返回一個 ModelAndView(模型資料和邏輯檢視名);圖中的 3、4、5 步驟;

3、  前端控制器收回控制權,然後根據返回的邏輯檢視名,選擇相應的檢視進行渲染,並把模型資料傳入以便檢視渲染;圖中的步驟 6、7;

4、  前端控制器再次收回控制權,將響應返回給使用者,圖中的步驟 8;至此整個結束。

 

(二)核心流程

 

具體步驟:

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

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

第三步:處理器對映器HandlerMapping向前端控制器返回Handler,HandlerMapping會把請求對映為HandlerExecutionChain物件(包含一個Handler處理器(頁面控制器)物件,多個HandlerInterceptor攔截器物件),通過這種策略模式,很容易新增新的對映策略

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

第五步:處理器介面卡HandlerAdapter將會根據適配的結果去執行Handler

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

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

第八步:前端控制器請求檢視解析器去進行檢視解析 (根據邏輯檢視名解析成真正的檢視(jsp)),通過這種策略很容易更換其他檢視技術,只需要更改檢視解析器即可

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

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

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

 

(三)總結 核心開發步驟

1、  DispatcherServlet 在 web.xml 中的部署描述,從而攔截請求到 Spring Web MVC

2、  HandlerMapping 的配置,從而將請求對映到處理器

3、  HandlerAdapter 的配置,從而支援多種型別的處理器

注:處理器對映求和介面卡使用紓解的話包含在了註解驅動中,不需要在單獨配置

4、  ViewResolver 的配置,從而將邏輯檢視名解析為具體檢視技術

5、  處理器(頁面控制器)的配置,從而進行功能處理 

View是一個介面,實現類支援不同的View型別(jsp、freemarker、pdf...)

 

相關文章