SpringMVC執行流程簡介
阿新 • • 發佈:2019-01-24
1、使用者向伺服器傳送請求,請求被SpringMVC的前端控制器DispatcherServlet截獲。
2、DispatcherServlet對請求的URL(統一資源定位符)進行解析,得到URI(請求資源識別符號),然後根據該URI,呼叫HandlerMapping獲得該Handler配置的所有相關的物件,包括Handler物件以及Handler物件對應的攔截器,這些物件都會被封裝到一個HandlerExecutionChain物件當中返回。
3、DispatcherServlet根據獲得的Handler,選擇一個合適的HandlerAdapter。HandlerAdapter的設計符合面向物件中的單一職責原則,程式碼結構清晰,便於維護,最為重要的是,程式碼的可複製性高。HandlerAdapter會被用於處理多種Handler ,呼叫Handler實際處理請求的方法。
4、
提取請求中的模型資料,開始執行Handler(Controller)。在填充Handler的入參過程中,根據配置,spring將幫助做一些額外的工作
訊息轉換:將請求的訊息,如json、xml等資料轉換成一個物件,將物件轉換為指定的響應資訊。
資料轉換:對請求訊息進行資料轉換,如String轉換成Integer、Double等。
資料格式化:對請求的訊息進行資料格式化,如將字串轉換為格式化數字或格式化日期等。
資料驗證:驗證資料的有效性如長度、格式等,驗證結果儲存到BindingResult或Error中。
5、Handler執行完成後,向DispatcherServlet返回一個ModelAndView物件,ModelAndView物件中應該包含檢視名或檢視模型。
6 、根據返回的ModelAndView物件,選擇一個合適的ViewResolver(檢視解析器)返回給DispatcherServlet。
7、ViewResolver結合Model和View來渲染檢視。
8、將檢視渲染結果返回給客戶端。
以上8個步驟,DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver等物件協同工作,完成SpringMVC請求—>響應的整個工作流程,這些物件完成的工作對於開發者來說都是不可見的,開發者並不需要關心這些物件是如何工作的,開發者,只需要在Handler(Controller)當中完成對請求的業務處理。