好吧桑孩,開始岸啡。
-
用戶發(fā)送一個請求到服務(wù)器,服務(wù)器中的前端控制器
DispatcherServlet
接受- 前端控制器
DispatcherServlet
是用于HTTP請求處理程序/控制器的中央調(diào)度器顾画,由他監(jiān)控和調(diào)度整個流請求處理流程
- 前端控制器
-
前端控制器
DispatcherServlet
接受請求并發(fā)送給處理器映射器HandlerMapping
- 處理器映射器
HandlerMapping
滨砍,負(fù)責(zé)將請求URL地址映射到某個處理器Handler
- 處理器
Handler
處理請求
- 處理器映射器
-
處理器映射器
HandlerMapping
找到對應(yīng)的Handler,返回執(zhí)行鏈HandlerExecutionChain
到前端控制器DispatcherServlet
- 執(zhí)行鏈
HandlerExecutionChain
中有一些攔截器蒲每,攔截一些請求
- 執(zhí)行鏈
-
前端控制器
DispatcherServlet
告訴處理器配置器HandlerAdapter
實行Handler- 處理器配置器
HandlerAdapter
根據(jù)配置結(jié)果纷跛,執(zhí)行Handler, 處理器配置器HandlerAdapter
就是實際調(diào)用Handler的一個類
- 處理器配置器
-
Hander處理具體的業(yè)務(wù)需求返回模型和視圖對象
ModelAndView
給處理器配置器HandlerAdapter
邀杏,再由處理器配置器HandlerAdapter
返回給前端控制器DispatcherServlet
- 模型和視圖
ModelAndView
中保存對象和視圖信息贫奠,對象信息就是key和value,視圖信息就是跳轉(zhuǎn)的視圖的信息
- 模型和視圖
-
前端控制器
DispatcherServlet
得到模型和視圖ModelAndView
就去請求視圖解析器ViewResolver
- 視圖解析器
ViewResolver
負(fù)責(zé)將邏輯視圖名解析為某個具體的一個實現(xiàn)了View接口的對象
- 視圖解析器
-
視圖解析器
ViewResolver
解析模型和視圖ModelAndView
得到視圖View
- 視圖
View
負(fù)責(zé)給客戶端返回應(yīng)答結(jié)果望蜡,結(jié)果不僅可以是HTMl頁面唤崭,也可以是文本,PDF脖律,Excel或報表
- 視圖
前端控制器
DispatcherServlet
最后將得到的視圖View
進行渲染谢肾,將Model中的數(shù)據(jù)填充到request作用域,響應(yīng)客戶端