一文讀懂SpringMVC工作流程

本文是對(duì) SpringMVC 工作流程的總結(jié),這是前段時(shí)間蘇寧Java工程師在線筆試的簡(jiǎn)答題,自己一定要可以用語(yǔ)言描述SpringMVC的工作流程。

SpringMVC工作流程.png

名詞解釋:

DispatcherServlet:前端控制器,是 SpringMVC 工作流程的中心,負(fù)責(zé)調(diào)用其他組件,在系統(tǒng)啟動(dòng)時(shí)就加載該類。

Handler:后端處理器,對(duì)用戶具體請(qǐng)求進(jìn)行處理,也就是我們編寫的 Controller 類。

HandlerMapping:處理器映射器,根據(jù)用戶訪問(wèn)的 URL 映射到對(duì)應(yīng)的后端處理器 Handler,根據(jù)不同的映射處理器可實(shí)現(xiàn)不同的映射,比如 xml 配置(現(xiàn)在不常用)、注解配置(最常用)。

HandlerExecutionChain:后端處理器 Handler 相關(guān)對(duì)象,包括 Handler 對(duì)象和對(duì)應(yīng)的攔截器對(duì)象,以 HandlerExecutionChain 對(duì)象包含了這些相關(guān)的對(duì)象。

ModelAndView:邏輯視圖,包括數(shù)據(jù)模型和視圖名。

HandlerAdapter:處理器適配器,調(diào)用后端處理器中的方法,返回邏輯視圖 ModelAndView 對(duì)象。

ViewResolver:視圖解析器,將 ModelAndView 邏輯視圖解析為具體的視圖(如 JSP,PDF等)。

工作流程:

1、當(dāng)用戶向服務(wù)器發(fā)送請(qǐng)求時(shí),會(huì)被 DispatcherServlet 攔截。

2、DispatherServlet 解析用戶訪問(wèn)的 URL,并調(diào)用處理器映射器 HandlerMapping。

3、 處理器映射器 HandlerMapping 映射到對(duì)應(yīng)的后端處理器 Handler(注意這里只是找到了對(duì)應(yīng)的 Controller 類,并沒(méi)有執(zhí)行其中的方法),Handler 對(duì)象以及 Handler 對(duì)象相關(guān)的攔截器對(duì)象會(huì)被封裝到 HandlerExecutionChain 對(duì)象中返回給 DispatcherServlet。

4、DispatcherServlet 根據(jù)后端處理器 Handler 對(duì)象來(lái)調(diào)用適合的處理器適配器。

5、HandlerAdapter 調(diào)用 Handler 對(duì)象執(zhí)行 Handler 中的方法,在 Handler 的方法中,可以做一些額外的工作,如消息轉(zhuǎn)換(如 JSON、XML 和 Java 對(duì)象的互轉(zhuǎn))、數(shù)據(jù)轉(zhuǎn)換(如 String 和 Integer、Double的互轉(zhuǎn))、數(shù)據(jù)格式化(如日期)、數(shù)據(jù)校驗(yàn)(后端校驗(yàn)),最終返回 ModelAndView 對(duì)象給 DispatcherServlet,該對(duì)象包含視圖名和數(shù)據(jù)模型。

6、DispatcherServlet 根據(jù) ModelAndView 對(duì)象來(lái)調(diào)用適合的視圖解析器 ViewResolver。

7、ViewResolver 解析 Model 和 View 返回具體的 view 給 DispatcherServlet。

8、DispatcherServlet 對(duì) view 進(jìn)行渲染,返回具體的視圖給客戶端顯示,如 JSP,JSON、XML、PDF等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容