Spring MVC 執(zhí)行流程的簡述
Spring MVC 執(zhí)行流程
啥都不說,
直接上圖:
1. 用戶發(fā)起請求到前端控制器(DispatcherServlet)
該控制器會過濾出哪些請求可以訪問Servlet、哪些不能訪問。
就是url-pattern的作用,并且會加載springmvc.xml配置文件。
2. 前端控制器會找到處理器映射器(HandlerMapping)
通過HandlerMapping完成url到controller映射的組件,簡單來說,
就是將在springmvc.xml中配置的或者注解的url與對應的處理類找到并進行存儲,用map<url,handler>這樣的方式來存儲。
3. HandlerMapping有了映射關系
并且找到url對應的處理器,HandlerMapping就會將其處理器(Handler)返回,在返回前,會加上很多攔截器。
4. DispatcherServlet拿到Handler后
找到HandlerAdapter(處理器適配器),通過它來訪問處理器,并執(zhí)行處理器。
5. 執(zhí)行處理器
6. 處理器會返回一個ModelAndView對象給HandlerAdapter
7. 通過HandlerAdapter
將ModelAndView對象返回給前端控制器(DispatcherServlet)
8. 前端控制器請求視圖解析器(ViewResolver)
去進行視圖解析,根據邏輯視圖名解析成真正的視圖(jsp),其實就是將ModelAndView對象中存放視圖的名稱進行查找,找到對應的頁面形成視圖對象
9. 返回視圖對象
到前端控制器
10. 視圖渲染
就是將ModelAndView對象中的數據放到request域中,用來讓頁面加載數據的。
11. 通過第8步
通過名稱找到了對應的頁面,通過第10步,request域中有了所需要的數據,那么就能夠進行視圖渲染了。最后將其返回即可。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot實現(xiàn)異步調用@Async的示例
這篇文章主要介紹了springboot實現(xiàn)異步調用@Async的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12mybatis spring配置SqlSessionTemplate的使用方式
這篇文章主要介紹了mybatis spring配置SqlSessionTemplate的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08gradle和maven打包時排除application.properties問題
文章主要介紹了Gradle、Maven(用于構建JAR包)和Maven(用于構建WAR包),文章基于個人經驗,為讀者提供了參考,并鼓勵大家支持腳本之家2024-12-12