Spring MVC 執(zhí)行流程的簡(jiǎn)述
Spring MVC 執(zhí)行流程
啥都不說(shuō),
直接上圖:
1. 用戶(hù)發(fā)起請(qǐng)求到前端控制器(DispatcherServlet)
該控制器會(huì)過(guò)濾出哪些請(qǐng)求可以訪(fǎng)問(wèn)Servlet、哪些不能訪(fǎng)問(wèn)。
就是url-pattern的作用,并且會(huì)加載springmvc.xml配置文件。
2. 前端控制器會(huì)找到處理器映射器(HandlerMapping)
通過(guò)HandlerMapping完成url到controller映射的組件,簡(jiǎn)單來(lái)說(shuō),
就是將在springmvc.xml中配置的或者注解的url與對(duì)應(yīng)的處理類(lèi)找到并進(jìn)行存儲(chǔ),用map<url,handler>這樣的方式來(lái)存儲(chǔ)。
3. HandlerMapping有了映射關(guān)系
并且找到url對(duì)應(yīng)的處理器,HandlerMapping就會(huì)將其處理器(Handler)返回,在返回前,會(huì)加上很多攔截器。
4. DispatcherServlet拿到Handler后
找到HandlerAdapter(處理器適配器),通過(guò)它來(lái)訪(fǎng)問(wèn)處理器,并執(zhí)行處理器。
5. 執(zhí)行處理器
6. 處理器會(huì)返回一個(gè)ModelAndView對(duì)象給HandlerAdapter
7. 通過(guò)HandlerAdapter
將ModelAndView對(duì)象返回給前端控制器(DispatcherServlet)
8. 前端控制器請(qǐng)求視圖解析器(ViewResolver)
去進(jìn)行視圖解析,根據(jù)邏輯視圖名解析成真正的視圖(jsp),其實(shí)就是將ModelAndView對(duì)象中存放視圖的名稱(chēng)進(jìn)行查找,找到對(duì)應(yīng)的頁(yè)面形成視圖對(duì)象
9. 返回視圖對(duì)象
到前端控制器
10. 視圖渲染
就是將ModelAndView對(duì)象中的數(shù)據(jù)放到request域中,用來(lái)讓頁(yè)面加載數(shù)據(jù)的。
11. 通過(guò)第8步
通過(guò)名稱(chēng)找到了對(duì)應(yīng)的頁(yè)面,通過(guò)第10步,request域中有了所需要的數(shù)據(jù),那么就能夠進(jìn)行視圖渲染了。最后將其返回即可。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis一對(duì)多查詢(xún)的兩種姿勢(shì)(值得收藏)
這篇文章主要給大家介紹了關(guān)于Mybatis一對(duì)多查詢(xún)的兩種姿勢(shì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Java中實(shí)現(xiàn)樹(shù)形菜單的兩種方式
這篇文中,我一共會(huì)用兩種方式來(lái)實(shí)現(xiàn)目錄樹(shù)的數(shù)據(jù)結(jié)構(gòu),兩種寫(xiě)法邏輯是一樣的,只是一種適合新手理解,一種看著簡(jiǎn)單明了但是對(duì)于小白不是很好理解,在這里我會(huì)很詳細(xì)的講解每一步代碼,主要是方便新人看懂,彌補(bǔ)曾經(jīng)自己學(xué)習(xí)過(guò)程中的苦惱,需要的朋友可以參考下2023-09-09springboot實(shí)現(xiàn)異步調(diào)用@Async的示例
這篇文章主要介紹了springboot實(shí)現(xiàn)異步調(diào)用@Async的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12mybatis spring配置SqlSessionTemplate的使用方式
這篇文章主要介紹了mybatis spring配置SqlSessionTemplate的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08gradle和maven打包時(shí)排除application.properties問(wèn)題
文章主要介紹了Gradle、Maven(用于構(gòu)建JAR包)和Maven(用于構(gòu)建WAR包),文章基于個(gè)人經(jīng)驗(yàn),為讀者提供了參考,并鼓勵(lì)大家支持腳本之家2024-12-12認(rèn)識(shí)Java底層操作系統(tǒng)與并發(fā)基礎(chǔ)
這篇文章主要介紹了認(rèn)識(shí)Java底層操作系統(tǒng)與并發(fā)基礎(chǔ),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07