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

淺談Spring中HandlerMapping的使用

 更新時(shí)間:2023年08月31日 10:18:21   作者:沐雨金鱗  
這篇文章主要介紹了淺談Spring中HandlerMapping的使用,Spingmvc中的HandlerMapping負(fù)責(zé)解析請(qǐng)求URL,對(duì)應(yīng)到Handler進(jìn)行處理,這里的Handler一般為Controller里的一個(gè)方法method,也可以為servlet或者Controller等,需要的朋友可以參考下

HandlerMapping

  • Spingmvc中的HandlerMapping負(fù)責(zé)解析請(qǐng)求URL,對(duì)應(yīng)到Handler進(jìn)行處理(這里的Handler一般為Controller里的一個(gè)方法method,也可以為servlet或者Controller等)

來(lái)看一個(gè)http請(qǐng)求的入口DispatcherServlet:

  • DispatcherServlet繼承FrameworkServlet,F(xiàn)rameworkServlet繼承HttpServletBean,HttpServletBean繼承HttpServlet。

可以看出,springmvc的DispatcherServlet是在Servelt的基礎(chǔ)上做了擴(kuò)展處理。

doService方法為servlet處理請(qǐng)求的入口,DispatcherServlet中做了方法覆蓋,doService方法中的doDispatch(request,response)方法,是springmvc處理整個(gè)請(qǐng)求流程的關(guān)鍵。

  • mappedHandler =getHandler(processedRequest);
  • 這行代碼實(shí)現(xiàn)了為請(qǐng)求尋找處理handler,返回的是HandlerExecutionChain;
  • HandlerAdapter ha =getHandlerAdapter(mappedHandler.getHandler());
  • 找到處理handler后,再去找匹配的HandlerAdapter,HandlerAdapter將完成后續(xù)處理。

繼續(xù)看是如何找到請(qǐng)求對(duì)應(yīng)的處理handler的:

可以看出是從類(lèi)變量this.handlerMappings中循環(huán)獲取,當(dāng)找到與之匹配的HandlerMapping時(shí),返回類(lèi)型為HandlerExecutionChain的handler。

這里this.handlerMappings中的值是從哪獲取的呢?DispatcherServlet初始化的時(shí)候會(huì)給this.handlerMappings賦值:

  • 從這里可以看出,在servlet初始化的時(shí)候,會(huì)對(duì)springmvc的HandlerMappings、HandlerAdapters等做初始化。
  • 這里三個(gè)步驟,先對(duì)springmvc.xml里配置的HandlerMapping進(jìn)行初始化、實(shí)例化,再對(duì)this.handlerMappings賦值,最后對(duì)this.handlerMappings進(jìn)行排序。
  • 這里的排序就是對(duì)HandlerMapping的order屬性進(jìn)行排序,這樣,order屬性值小的,就可以先對(duì)請(qǐng)求進(jìn)行匹配。

從tomcat啟動(dòng)日志里可以看到HandlerMapping的初始化:

 這里涉及到兩個(gè)HandlerMapping:

  • 第一個(gè)是BeanNameUrlHandlerMapping,初始化時(shí)會(huì)將urlpath做映射存儲(chǔ);
  • 第二個(gè)是RequestMappingHandlerMapping,初始化時(shí)會(huì)將Controller中配置@RequestMapping注解的方法做映射存儲(chǔ)。

HandlerMapping初始化時(shí),會(huì)將映射與handler存儲(chǔ)到map里;處理請(qǐng)求時(shí),從map里取出對(duì)應(yīng)的處理handler。

這就是HandlerMapping在springmvc里的大致處理流程。

到此這篇關(guān)于淺談Spring中HandlerMapping的使用的文章就介紹到這了,更多相關(guān)HandlerMapping的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Volatile關(guān)鍵字你真的了解嗎

    Java Volatile關(guān)鍵字你真的了解嗎

    這篇文章主要為大家介紹了Java Volatile關(guān)鍵字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • MyBatis的核心配置文件以及映射文件

    MyBatis的核心配置文件以及映射文件

    這篇文章主要介紹了MyBatis的核心配置文件以及映射文件,Mybatis它是一款半自動(dòng)的ORM持久層框架,具有較高的SQL靈活性,支持高級(jí)映射(一對(duì)一,一對(duì)多),動(dòng)態(tài)SQL,延遲加載和緩存等特性,但它的數(shù)據(jù)庫(kù)無(wú)關(guān)性較低,需要的朋友可以參考下
    2023-05-05
  • 淺析SpringBoot自動(dòng)裝配的實(shí)現(xiàn)

    淺析SpringBoot自動(dòng)裝配的實(shí)現(xiàn)

    springboot開(kāi)箱即用,其實(shí)實(shí)現(xiàn)了自動(dòng)裝配,本文重點(diǎn)給大家介紹SpringBoot是如何做到自動(dòng)裝配的,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • java實(shí)現(xiàn)變更文件查詢(xún)的方法

    java實(shí)現(xiàn)變更文件查詢(xún)的方法

    這篇文章主要介紹了java實(shí)現(xiàn)變更文件查詢(xún)的方法,可通過(guò)java查詢(xún)文件最后修改時(shí)間的方法實(shí)現(xiàn)查找變更文件的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 如何使用Spring AOP的通知類(lèi)型及創(chuàng)建通知

    如何使用Spring AOP的通知類(lèi)型及創(chuàng)建通知

    這篇文章主要給大家介紹了關(guān)于如何使用Spring AOP的通知類(lèi)型及創(chuàng)建通知的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring AOP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 你知道Spring如何解決所有循環(huán)依賴(lài)的嗎

    你知道Spring如何解決所有循環(huán)依賴(lài)的嗎

    這篇文章主要來(lái)和大家聊聊Spring?能解決所有循環(huán)依賴(lài)嗎,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Spring有一定的幫助,需要的小伙伴可以參考一下
    2023-07-07
  • 解讀為何java中的boolean類(lèi)型是32位的

    解讀為何java中的boolean類(lèi)型是32位的

    這篇文章主要介紹了為何java中的boolean類(lèi)型是32位的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Servlet實(shí)現(xiàn)簡(jiǎn)單文件上傳功能

    Servlet實(shí)現(xiàn)簡(jiǎn)單文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了Servlet實(shí)現(xiàn)簡(jiǎn)單文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 詳解Java中的字節(jié)碼增強(qiáng)技術(shù)

    詳解Java中的字節(jié)碼增強(qiáng)技術(shù)

    字節(jié)碼增強(qiáng)技術(shù)就是一類(lèi)對(duì)現(xiàn)有字節(jié)碼進(jìn)行修改或者動(dòng)態(tài)生成全新字節(jié)碼文件的技術(shù)。本文將通過(guò)示例詳細(xì)說(shuō)說(shuō)Java的字節(jié)碼增強(qiáng)技術(shù),需要的可以參考一下
    2022-10-10
  • Maven引入本地Jar包并打包進(jìn)War包中的方法

    Maven引入本地Jar包并打包進(jìn)War包中的方法

    本篇文章主要介紹了Maven引入本地Jar包并打包進(jìn)War包中的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11

最新評(píng)論