SpringMVC的工作原理
SpringMVC處理請求的過程,以及涉及到的主要組件

SpringMVC請求處理過程
1?? 用戶 —> Dispatcher Servlet
用戶發(fā)送請求給 Dispatcher Servlet 前端控制器 , Dispatcher Servlet 前端控制器不進行處理,而是調(diào)用其他解析器進行用戶的請求處理,它只作為一個轉(zhuǎn)發(fā)器
2?? Dispatcher Servlet —> HandlerMapping, 3? HandlerMapping —> Controller
DispatcherServlet 接受到請求后,調(diào)用 HandlerMapping,然后根據(jù) URL,尋找到對應(yīng)的 Controller
4?? Dispatcher Servlet —> HandlerAdapter , 5? HandlerAdapter —> Controller
完成了 URL 和 Controller 映射過程后,也就是找到了對應(yīng)的 Controller,那么Dispatcher Servlet 就調(diào)用 HandlerAdapter 適配器,去執(zhí)行該 Controller
6 ? Controller —> HandlerAdapter , 7? HandlerAdapter —> Dispatcher Servlet
Controller 完成業(yè)務(wù)處理,返回一個ModelAndView 對象(包含模型數(shù)據(jù)、邏輯視圖名)
8 ? Dispatcher Servlet —> ViewResolver , 9? ViewResolver —> Dispatcher Servlet
Dispatcher Servlet 調(diào)用 ViewResolver 進行 ModelAndView 對象的解析,將ModelAndView 的邏輯視圖名解析為具體的 View,返回 View 視圖對象
10 ? Dispatcher Servlet —> View , 11 Dispatcher Servlet —> 用戶
Dispatcher Servlet 調(diào)用 View 對傳進來的Model模型數(shù)據(jù)進行渲染,此處的Model實際是一個Map數(shù)據(jù)結(jié)構(gòu)。返回控制權(quán)給DispatcherServlet,由DispatcherServlet將結(jié)果響應(yīng)給用戶
SpringMVC的組件
DispatcherServlet 前端控制器 (框架提供):控制中心,用于接收請求,調(diào)用其他組件來處理用戶的請求,并且響應(yīng)結(jié)果。減小組件間的耦合性
HandlerMapping 處理器映射器(框架提供):根據(jù)請求URL尋找匹配的Handler,也就是Controller。映射方式包括注解方式、配置文件方式、實現(xiàn)接口方式
HandlerAdapter 處理器適配器:根據(jù)HandlerAdapter 自身要求的規(guī)則,去執(zhí)行Handler,也就是Controller
Controller處理器(開發(fā)者編程):在DispatcherServlet的控制下,對具體的用戶請求進行處理。開發(fā)者需要根據(jù)業(yè)務(wù)需求編寫Controller
ViewResolver 視圖解析器:根據(jù)邏輯視圖名解析成具體的頁面地址,再將處理結(jié)果生成View視圖。Springmvc 支持多類型的視圖解析,例如:jsp、freemarker、pdf、excel等
View 視圖 (開發(fā)者編程) : View就是展示給用戶的界面,需要開發(fā)者進行頁面設(shè)計,視圖中通常使用標簽語言來展示模型數(shù)據(jù)
參考鏈接:https://www.cnblogs.com/xiaoxi/p/6164383.html
????????????????? https://www.cnblogs.com/heavenyes/p/3905844.html