最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談Spring中HandlerMapping的使用

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

HandlerMapping

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

來看一個http請求的入口DispatcherServlet:

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

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

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

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

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

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

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

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

從tomcat啟動日志里可以看到HandlerMapping的初始化:

 這里涉及到兩個HandlerMapping:

  • 第一個是BeanNameUrlHandlerMapping,初始化時會將urlpath做映射存儲;
  • 第二個是RequestMappingHandlerMapping,初始化時會將Controller中配置@RequestMapping注解的方法做映射存儲。

HandlerMapping初始化時,會將映射與handler存儲到map里;處理請求時,從map里取出對應(yīng)的處理handler。

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

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

相關(guān)文章

  • RabbitMQ實現(xiàn)消息可靠性傳遞過程講解

    RabbitMQ實現(xiàn)消息可靠性傳遞過程講解

    消息的可靠性傳遞是指保證消息百分百發(fā)送到消息隊列中去,這篇文章主要介紹了RabbitMQ實現(xiàn)消息可靠性傳遞過程,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • java多態(tài)中的就近原則介紹

    java多態(tài)中的就近原則介紹

    大家好,本篇文章主要講的是java多態(tài)中的就近原則介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 使用springboot跳轉(zhuǎn)到指定頁面和(重定向,請求轉(zhuǎn)發(fā)的實例)

    使用springboot跳轉(zhuǎn)到指定頁面和(重定向,請求轉(zhuǎn)發(fā)的實例)

    這篇文章主要介紹了使用springboot跳轉(zhuǎn)到指定頁面和(重定向,請求轉(zhuǎn)發(fā)的實例),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • springboot集成nacos讀取nacos配置數(shù)據(jù)的原理

    springboot集成nacos讀取nacos配置數(shù)據(jù)的原理

    這篇文章主要介紹了springboot集成nacos讀取nacos配置數(shù)據(jù)的原理,文中有詳細(xì)的代碼流程,對大家學(xué)習(xí)springboot集成nacos有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • Java中的Scanner、BufferedReader?和?StreamTokenizer使用詳解

    Java中的Scanner、BufferedReader?和?StreamTokenizer使用詳解

    Scanner是Java?中一個用于解析原始類型(如?int、double?等)和字符串的類,它通常從輸入流中逐個讀取數(shù)據(jù)并進(jìn)行解析,支持多種分隔符的使用,本文介紹Java中的Scanner、BufferedReader?和?StreamTokenizer的相關(guān)知識,感興趣的朋友一起看看吧
    2025-02-02
  • Spring HandlerInterceptor實現(xiàn)原理代碼解析

    Spring HandlerInterceptor實現(xiàn)原理代碼解析

    這篇文章主要介紹了Spring HandlerInterceptor實現(xiàn)原理代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 初次使用IDEA創(chuàng)建maven項目的教程

    初次使用IDEA創(chuàng)建maven項目的教程

    這篇文章主要介紹了初次使用IDEA創(chuàng)建maven項目的教程講解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 詳解Java的位運算

    詳解Java的位運算

    這篇文章主要介紹了詳解Java的位運算,程序中的所有數(shù)在計算機內(nèi)存中都是以二進(jìn)制的形式儲存的。位運算就是直接對整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作,需要的朋友可以參考下
    2023-04-04
  • Java程序員面試中的多線程問題總結(jié)

    Java程序員面試中的多線程問題總結(jié)

    這篇文章收集了 Java 線程方面一些典型的問題,這些問題經(jīng)常被高級工程師所問到。這篇文章收集了 Java 線程方面一些典型的問題,這些問題經(jīng)常被高級工程師所問到。
    2016-11-11
  • Maven中plugins與pluginManagement的區(qū)別說明

    Maven中plugins與pluginManagement的區(qū)別說明

    這篇文章主要介紹了Maven中plugins與pluginManagement的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

安陆市| 启东市| 安仁县| 饶河县| 乐业县| 措勤县| 南部县| 奉新县| 贵阳市| 宜都市| 勃利县| 丰宁| 房产| 陕西省| 扎囊县| 南华县| 浑源县| 太仆寺旗| 崇信县| 昌乐县| 玛纳斯县| 青海省| 乌拉特后旗| 安新县| 惠东县| 永川市| 江永县| 昌黎县| 大洼县| 格尔木市| 湟源县| 壤塘县| 井冈山市| 丹棱县| 抚顺市| 吴旗县| 且末县| 屯门区| 建始县| 突泉县| 嘉祥县|