spring工作的流程
1 用戶發(fā)起請求到前端控制器(DispatcherServlet),該控制器會過濾出哪些請求可以訪問Servlet并齐、哪些不能訪問傀顾。就是url-pattern的作用,并且會加載springmvc.xml配置文件盏求。
2 前端控制器會找到處理器映射器(HandlerMapping)蛤吓,通過HandlerMapping完成url到controller映射的組件宵喂,簡單來說,就是將在springmvc.xml中配置的或者注解的url與對應(yīng)的處理類找到并進(jìn)行存儲会傲,用map<url,handler>這樣的方式來存儲锅棕。
3 HandlerMapping有了映射關(guān)系,并且找到url對應(yīng)的處理器淌山,HandlerMapping就會將其處理器(Handler)返回裸燎,在返回前,會加上很多攔截器泼疑。
4 DispatcherServlet拿到Handler后德绿,找到HandlerAdapter(處理器適配器),通過它來訪問處理器退渗,并執(zhí)行處理器移稳。
5 執(zhí)行處理器
6 處理器會返回一個ModelAndView對象給HandlerAdapter
7 通過HandlerAdapter將ModelAndView對象返回給前端控制器(DispatcherServlet)
8 前端控制器請求視圖解析器(ViewResolver)去進(jìn)行視圖解析,根據(jù)邏輯視圖名解析成真正的視圖(jsp)会油,其實就是將ModelAndView對象中存放視圖的名稱進(jìn)行查找个粱,找到對應(yīng)的頁面形成視圖對象
9 返回視圖對象到前端控制器。
10 視圖渲染翻翩,就是將ModelAndView對象中的數(shù)據(jù)放到request域中都许,用來讓頁面加載數(shù)據(jù)的。
11 通過第8步嫂冻,通過名稱找到了對應(yīng)的頁面胶征,通過第10步,request域中有了所需要的數(shù)據(jù)桨仿,那么就能夠進(jìn)行視圖渲染了睛低。最后將其返回即可。
————————————————
原文鏈接:https://blog.csdn.net/qinqigang/article/details/78540543