欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?MVC請(qǐng)求處理流程和九大組件詳解

 更新時(shí)間:2023年12月07日 10:53:04   作者:共飲一杯無(wú)  
這篇文章主要介紹了Spring?MVC請(qǐng)求處理流程和九大組件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

需求:前端瀏覽器請(qǐng)求url: http://localhost:8080/demo/handle01,前端??顯示后臺(tái)服務(wù)器的時(shí)間
開(kāi)發(fā)過(guò)程

  • 配置DispatcherServlet前端控制器
  • 開(kāi)發(fā)處理具體業(yè)務(wù)邏輯的Handler(@Controller、@RequestMapping)
  • xml配置?件配置controller掃描,配置springmvc三?件
  • 將xml?件路徑告訴springmvc(DispatcherServlet)

Spring MVC 請(qǐng)求處理流程

在這里插入圖片描述

流程說(shuō)明
第?步:?戶發(fā)送請(qǐng)求?前端控制器DispatcherServlet
第?步:DispatcherServlet收到請(qǐng)求調(diào)?HandlerMapping處理器映射器
第三步:處理器映射器根據(jù)請(qǐng)求Url找到具體的Handler(后端控制器),?成處理器對(duì)象及處理器攔截器(如果 有則?成)?并返回DispatcherServlet
第四步:DispatcherServlet調(diào)?HandlerAdapter處理器適配器去調(diào)?Handler
第五步:處理器適配器執(zhí)?Handler
第六步:Handler執(zhí)?完成給處理器適配器返回ModelAndView
第七步:處理器適配器向前端控制器返回 ModelAndView,ModelAndView 是SpringMVC 框架的?個(gè)底層對(duì)象,包括 Model 和 View
第?步:前端控制器請(qǐng)求視圖解析器去進(jìn)?視圖解析,根據(jù)邏輯視圖名來(lái)解析真正的視圖。
第九步:視圖解析器向前端控制器返回View
第?步:前端控制器進(jìn)?視圖渲染,就是將模型數(shù)據(jù)(在 ModelAndView 對(duì)象中)填充到 request 域
第??步:前端控制器向?戶響應(yīng)結(jié)果。

Spring MVC 九?組件

  • HandlerMapping(處理器映射器)

HandlerMapping 是?來(lái)查找 Handler 的,也就是處理器,具體的表現(xiàn)形式可以是類,也可以是?法。?如,標(biāo)注了@RequestMapping的每個(gè)?法都可以看成是?個(gè)Handler。Handler負(fù)責(zé)具體實(shí)際的請(qǐng)求處理,在請(qǐng)求到達(dá)后,HandlerMapping 的作?便是找到請(qǐng)求相應(yīng)的處理器Handler 和 Interceptor。

  • HandlerAdapter(處理器適配器)

HandlerAdapter 是?個(gè)適配器。因?yàn)?Spring MVC 中 Handler 可以是任意形式的,只要能處理請(qǐng)求即可。但是把請(qǐng)求交給 Servlet 的時(shí)候,由于 Servlet 的?法結(jié)構(gòu)都是doService(HttpServletRequest req,HttpServletResponse resp)形式的,要讓固定的 Servlet 處理?法調(diào)? Handler 來(lái)進(jìn)?處理,便是HandlerAdapter 的職責(zé)。

  • HandlerExceptionResolver(Handler異常解析器)

HandlerExceptionResolver ?于處理 Handler 產(chǎn)?的異常情況。它的作?是根據(jù)異常設(shè)置ModelAndView,之后交給渲染?法進(jìn)?渲染,渲染?法會(huì)將 ModelAndView 渲染成??。

  • ViewResolver(視圖解析器)

ViewResolver即視圖解析器,?于將String類型的視圖名和Locale解析為View類型的視圖,只有?個(gè)resolveViewName()?法。從?法的定義可以看出,Controller層返回的String類型視圖名viewName 最終會(huì)在這?被解析成為View。View是?來(lái)渲染??的,也就是說(shuō),它會(huì)將程序返回的參數(shù)和數(shù)據(jù)填?模板中,?成html?件。ViewResolver 在這個(gè)過(guò)程主要完成兩件事情:
ViewResolver 找到渲染所?的模板(第?件?事)和所?的技術(shù)(第?件?事,其實(shí)也就是找到視圖的類型,如JSP)并填?參數(shù)。默認(rèn)情況下,Spring MVC會(huì)?動(dòng)為我們配置?個(gè)InternalResourceViewResolver,是針對(duì) JSP 類型視圖的。

  • RequestToViewNameTranslator(ViewName翻譯器)

RequestToViewNameTranslator 組件的作?是從請(qǐng)求中獲取 ViewName。因?yàn)?ViewResolver 根據(jù)ViewName 查找 View,但有的 Handler 處理完成之后,沒(méi)有設(shè)置 View,也沒(méi)有設(shè)置 ViewName,便要通過(guò)這個(gè)組件從請(qǐng)求中查找 ViewName。

  • LocaleResolver(區(qū)域設(shè)置解析器)

ViewResolver 組件的 resolveViewName ?法需要兩個(gè)參數(shù),?個(gè)是視圖名,?個(gè)是 Locale。LocaleResolver ?于從請(qǐng)求中解析出 Locale,?如中國(guó) Locale 是 zh-CN,?來(lái)表示?個(gè)區(qū)域。這個(gè)組件也是 i18n 的基礎(chǔ)。

  • ThemeResolver(主題解析器)

ThemeResolver 組件是?來(lái)解析主題的。主題是樣式、圖?及它們所形成的顯示效果的集合。Spring MVC 中?套主題對(duì)應(yīng)?個(gè) properties?件,??存放著與當(dāng)前主題相關(guān)的所有資源,如圖?、CSS樣式等。創(chuàng)建主題?常簡(jiǎn)單,只需準(zhǔn)備好資源,然后新建?個(gè)“主題名.properties”并將資源設(shè)置進(jìn)去,放在classpath下,之后便可以在??中使?了。SpringMVC中與主題相關(guān)的類有ThemeResolver、ThemeSource和Theme。ThemeResolver負(fù)責(zé)從請(qǐng)求中解析出主題名,ThemeSource根據(jù)主題名找到具體的主題,其抽象也就是Theme,可以通過(guò)Theme來(lái)獲取主題和具體的資源。

  • MultipartResolver(上傳處理器)

MultipartResolver ?于上傳請(qǐng)求,通過(guò)將普通的請(qǐng)求包裝成 MultipartHttpServletRequest 來(lái)實(shí)現(xiàn)。MultipartHttpServletRequest 可以通過(guò) getFile() ?法 直接獲得?件。如果上傳多個(gè)?件,還可以調(diào)? getFileMap()?法得到Map<FileName,F(xiàn)ile>這樣的結(jié)構(gòu),MultipartResolver 的作?就是封裝普通的請(qǐng)求,使其擁有?件上傳的功能。

  • FlashMapManager(傳輸參數(shù)管理器)

FlashMap ?于重定向時(shí)的參數(shù)傳遞,?如在處理?戶訂單時(shí)候,為了避免重復(fù)提交,可以處理完post請(qǐng)求之后重定向到?個(gè)get請(qǐng)求,這個(gè)get請(qǐng)求可以?來(lái)顯示訂單詳情之類的信息。這樣做雖然可以規(guī)避?戶重新提交訂單的問(wèn)題,但是在這個(gè)??上要顯示訂單的信息,這些數(shù)據(jù)從哪?來(lái)獲得呢?因?yàn)橹囟ㄏ驎r(shí)么有傳遞參數(shù)這?功能的,如果不想把參數(shù)寫進(jìn)URL(不推薦),那么就可以通過(guò)FlashMap來(lái)傳遞。只需要在重定向之前將要傳遞的數(shù)據(jù)寫?請(qǐng)求(可以通過(guò)ServletRequestAttributes.getRequest()?法獲得)的屬性O(shè)UTPUT_FLASH_MAP_ATTRIBUTE中,這樣在重定向之后的Handler中Spring就會(huì)?動(dòng)將其設(shè)置到Model中,在顯示訂單信息的??上就可以直接從Model中獲取數(shù)據(jù)。FlashMapManager 就是?來(lái)管理 FalshMap 的。

到此這篇關(guān)于Spring MVC請(qǐng)求處理流程和九大組件的文章就介紹到這了,更多相關(guān)Spring MVC請(qǐng)求處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀

    Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀

    這篇文章主要介紹了Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀,與字節(jié)型文件流不同,字節(jié)型文件流讀取和寫入的都是一個(gè)又一個(gè)的字節(jié),而字符型文件流操作的單位是一個(gè)又一個(gè)的字符,字符型流認(rèn)為一個(gè)字母是一個(gè)字符,而一個(gè)漢字也是一個(gè)字符,需要的朋友可以參考下
    2023-10-10
  • Java實(shí)現(xiàn)順序棧的示例代碼

    Java實(shí)現(xiàn)順序棧的示例代碼

    線性表和棧都是我們常用的數(shù)據(jù)結(jié)構(gòu),棧可以看成一種特殊狀態(tài)的線性表。線性表分為順序表和鏈表,使用線性表中的順序表來(lái)實(shí)現(xiàn)棧時(shí)這種棧被稱為順序棧。這篇文章總結(jié)了如何使用順序表實(shí)現(xiàn)棧,需要的可以參考一下
    2022-11-11
  • java compare compareTo方法區(qū)別詳解

    java compare compareTo方法區(qū)別詳解

    本文主要介紹了java compare compareTo方法區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • maven打包失敗踩坑的解決方式詳解

    maven打包失敗踩坑的解決方式詳解

    最近因?yàn)樾马?xiàng)目有很多自定義的jar包,而且占內(nèi)存很多,就直接拷貝過(guò)來(lái),新開(kāi)了一個(gè)maven倉(cāng)庫(kù),用的時(shí)候沒(méi)有問(wèn)題,但是打包一直編譯不通過(guò),下面這篇文章主要給大家介紹了關(guān)于maven打包失敗踩坑的解決方式,需要的朋友可以參考下
    2023-05-05
  • SpringBoot2 整合Nacos組件及環(huán)境搭建和入門案例解析

    SpringBoot2 整合Nacos組件及環(huán)境搭建和入門案例解析

    這篇文章主要介紹了SpringBoot2 整合Nacos組件,環(huán)境搭建和入門案例詳解,在整合springboot2時(shí)注意版本 0.2.x.RELEASE 對(duì)應(yīng)的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 對(duì)應(yīng)的是 Spring Boot 1.x 版本,具體內(nèi)容詳情跟隨小編一起看看吧
    2022-03-03
  • Java中不用第三個(gè)變量來(lái)互換兩個(gè)變量的值

    Java中不用第三個(gè)變量來(lái)互換兩個(gè)變量的值

    在程序運(yùn)行期間,隨時(shí)可能產(chǎn)生一些臨時(shí)數(shù)據(jù),應(yīng)用程序會(huì)將這些數(shù)據(jù)保存在一些內(nèi)存單元中,每個(gè)內(nèi)存單元都用一個(gè)標(biāo)識(shí)符來(lái)標(biāo)識(shí)。這些內(nèi)存單元被稱為變量,定義的標(biāo)識(shí)符就是變量名,內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)就是變量的值
    2021-10-10
  • java 實(shí)現(xiàn)局域網(wǎng)文件傳輸?shù)膶?shí)例

    java 實(shí)現(xiàn)局域網(wǎng)文件傳輸?shù)膶?shí)例

    這篇文章主要介紹了java 實(shí)現(xiàn)局域網(wǎng)文件傳輸?shù)膶?shí)例的相關(guān)資料,這里提供了實(shí)現(xiàn)代碼可以幫助大家理解TCP及文件讀寫的知識(shí),需要的朋友可以參考下
    2017-07-07
  • Spring MVC中使用Google kaptcha驗(yàn)證碼的方法詳解

    Spring MVC中使用Google kaptcha驗(yàn)證碼的方法詳解

    kaptcha 是一個(gè)非常實(shí)用的驗(yàn)證碼生成工具。有了它,你可以生成各種樣式的驗(yàn)證碼,因?yàn)樗强膳渲玫?,下面這篇文章主要給大家介紹了關(guān)于Spring MVC中使用Google kaptcha驗(yàn)證碼的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-10-10
  • idea中l(wèi)ombok的用法

    idea中l(wèi)ombok的用法

    lombok是開(kāi)源的代碼生成庫(kù),是一款非常實(shí)用的小工具,在更改實(shí)體類時(shí)只需要修改屬性即可,減少了很多重復(fù)代碼的編寫工作,今天小編給大家介紹idea中l(wèi)ombok的用法,感興趣的朋友一起看看吧
    2021-12-12
  • 將idea中xml文件背景顏色去除的圖文教程

    將idea中xml文件背景顏色去除的圖文教程

    這篇文章主要介紹了將idea中xml文件背景顏色去除,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論