精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring5 里邊的新玩法!這種 URL 請求讓我漲見識了!

網絡 通信技術
AntPathMatcher 是一個實現了 Ant 風格的路徑匹配器,Ant 風格的路徑規則實際上就是我們前面給大家介紹的那三種路徑匹配符,很 Easy。

[[385769]]

Spring5 也已經出來好久了,里邊有一些新玩法也需要我們去慢慢揭開面紗,這不,松哥最近在研究 SpringMVC 源碼的時候,就看到這樣一段代碼:

  1. protected String initLookupPath(HttpServletRequest request) { 
  2.  if (usesPathPatterns()) { 
  3.   request.removeAttribute(UrlPathHelper.PATH_ATTRIBUTE); 
  4.   RequestPath requestPath = ServletRequestPathUtils.getParsedRequestPath(request); 
  5.   String lookupPath = requestPath.pathWithinApplication().value(); 
  6.   return UrlPathHelper.defaultInstance.removeSemicolonContent(lookupPath); 
  7.  } 
  8.  else { 
  9.   return getUrlPathHelper().resolveAndCacheLookupPath(request); 
  10.  } 

這個方法就是 Spring5 里邊出來的,以前是沒有這個方法的。在舊的 SpringMVC 中,當我們需要獲取當前請求地址的時候,直接通過如下方式獲取:

  1. String lookupPath = this.getUrlPathHelper().getLookupPathForRequest(request); 

但是現在變了,現在獲取當前請求 URL 地址時,方式如下:

  1. String lookupPath = initLookupPath(request); 

兩種方式相比,主要是 initLookupPath 方法中多了 usesPathPatterns 選項,這是 Spring5 中的新玩意,所以今天松哥就通過一篇簡單的文章來和大家分享一下 usesPathPatterns 到底是什么,該怎么玩!

這可不是一個小變化哦!特別是如果你在項目中使用了 WebFlux,那么這個東西就顯得尤為重要了!

AntPathMatcher

當我們使用 @RequestMapping 注解去標記請求接口的時候(或者使用它的類似方法如 @GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping),我們可以使用一些通配符去匹配 URL 地址,舉個簡單例子,假設我有下面五個接口:

  1. @GetMapping("/hello/**/hello"
  2. public String hello() { 
  3.     return "/hello/**/hello"
  4. @GetMapping("/h?llo"
  5. public String hello2() { 
  6.     return "/h?llo"
  7. @GetMapping("/**/*.html"
  8. public String hello3() { 
  9.     return "/**/*.html"
  10. @GetMapping("/hello/{p1}/{p2}"
  11. public String hello4(@PathVariable String p1, @PathVariable String p2) { 
  12.     System.out.println("p1 = " + p1); 
  13.     System.out.println("p2 = " + p2); 
  14.     return "/hello/{p1}/{p2}"
  15. @GetMapping("/{name:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{ext:\\.[a-z]+}"
  16. public void handle(@PathVariable String name, @PathVariable String version, @PathVariable String ext) { 
  17.     System.out.println("name = " + name); 
  18.     System.out.println("version = " + version); 
  19.     System.out.println("ext = " + ext); 

在解釋接口的含義之前,先來說說這幾個通配符的含義:

通配符 含義
** 匹配0個或者多個目錄
* 匹配0個或者多個字符
? 匹配任意單個字符

了解了通配符的含義,我們再來說說各個接口都能接收哪些請求:

  • 第一個接口,可以接收諸如 /hello/123/123/hello、/hello/a/hello 以及 /hello/hello 這樣的請求,因為中間的 ** 代表 0 個或者多個目錄。
  • 第二個接口,可以接收諸如 /hallo、/hello、/hMllo 之類的請求,注意它不能接收 /haallo 或者 /hllo,因為 ? 表示一個字符。
  • 第三個接口可以接收任意以 .html 為后綴的請求,例如 /aaa/bb/cc.html、/aa.html 或者 /aa/aa.html。
  • 第四個接口估計大家都比較熟悉,在 RESTful 風格的接口設計中估計大家都用過,它接收的請求格式類似于 /hello/aa/bb,其中參數 p1 就對應 aa,參數 p2 對應 bb。
  • 第五個接口則用到了正則,name、version 以及 ext 三個參數格式用正則表達出來,它可以接收諸如 /spring-web-3.0.5.jar 格式的請求,最終的參數 name 就是spring-web,version 就是 3.0.5,ext 則是 .jar。

這是 SpringMVC 中之前就存在的功能,不管你用沒用過,反正它一致存在。

那么是誰支撐了這個功能呢?那就是 AntPathMatcher。

AntPathMatcher 是一個實現了 Ant 風格的路徑匹配器,Ant 風格的路徑規則實際上就是我們前面給大家介紹的那三種路徑匹配符,很 Easy。這種路徑匹配規則源自 Apache Ant 項目(https://ant.apache.org),Apache Ant 我們現在其實已經很少會用到了,它的替代品就是大家所熟知的 Maven,如果你有幸維護一些 2010 年之前的老項目的話,有可能會接觸到 Ant。

AntPathMatcher 實際上在 SpringMVC 中有非常廣泛的應用,不僅僅是在 @RequestMapping 中定義接口用到,在其他一些涉及到地址匹配的地方也會用到,例如我們在 SpringMVC 的配置文件中配置靜態資源過濾時,也是 Ant 風格路徑匹配:

  1. <mvc:resources mapping="/**" location="/"/> 

另外像攔截器里的攔截路徑注冊、跨域處理時的路徑匹配等等,都會用到 Ant 風格的路徑匹配符。

整體上來說,AntPathMatcher 是 Spring 中一種比較原始的路徑匹配解決方案,雖然比較簡單,但是它的效率很低,并且在處理 URL 編碼的時候也很不方便。

因此,才有了 Spring5 中的 PathPattern。

PathPattern

PathPattern 專為 Web 應用設計,它與之前的 AntPathMatcher 功能大部分比較類似,當然也有一些細微差異,這個松哥后面會說。

如果是 Servlet 應用,目前官方推薦的 URL 匹配解決方案就是 PathPattern(當然你也可以選擇較早的 AntPathMatcher),雖然官方推薦的是 PathPattern,但實際上默認使用的依然是 AntPathMatcher;如果你用的是 WebFlux,PathPattern 就是唯一解決方案了。

注意,PathPattern 是一個非常新鮮的玩藝,目前 Spring 最新版是 5.3.4,在 Spring5.3 之前,我們在 Servlet 應用中,也只能選擇 AntPathMatcher,從 Spring5.3 之后,我們才可以使用 PathPattern 了。

PathPattern 會將 URL 規則預解析為 PathContainer,它對 URL 地址匹配的處理更加快速,PathPattern 與 AntPathMatcher 的差異主要體現在兩個方面:

第一,PathPattern 只支持結尾部分使用 **,如果在路徑的中間使用 ** 就會報錯,上文中第一個和第三個接口,在 PathPattern 模式下會報錯,如下:

 

因為在中間或者開始使用 ** 極易造成混亂,因此 PathPattern 只支持在結尾使用 **。

第二,PathPattern 支持使用諸如 {*path} 的方式進行路徑匹配,這種寫法也可以匹配到多層路徑,并且將匹配到的值賦值給 path 變量,例如如下一個接口:

  1. @GetMapping("/javaboy/{*path}"
  2. public void hello6(@PathVariable String path) { 
  3.     System.out.println("path = " + path); 

如果請求路徑是 http://localhost:8080/javaboy/aa,那么參數 path 的值就是 /aa;

如果請求路徑是 http://localhost:8080/javaboy/aa/bb/cc/dd,那么參數 path 的值就是 /aa/bb/cc/dd;

這個寫法也比較新穎,因為之前的 AntPathMatcher 里邊沒有這個。

如何使用

默認情況下,SpringMVC 中使用的還是 AntPathMatcher,那么如何開啟 PathPattern 呢?很簡單,在 SpringBoot 項目中只需要添加如下配置即可:

  1. @Configuration 
  2. public class WebConfig implements WebMvcConfigurer { 
  3.     @Override 
  4.     public void configurePathMatch(PathMatchConfigurer configurer) { 
  5.         configurer.setPatternParser(new PathPatternParser()); 
  6.     } 

添加了這個配置后,在我們文章一開始貼出來的代碼里,就會進入到 if 分支中,進而使用 PathPattern 去解析請求 URL。

 

小結

好啦,今天就和小伙伴們聊這么多,大家可以體驗一把這個東東,不過注意選擇 Spring 的版本哦,一定選擇 5.3 之上的版本~大家周末愉快哦~

本文轉載自微信公眾號「江南一點雨」,可以通過以下二維碼關注。轉載本文請聯系江南一點雨公眾號。

 

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2020-08-20 07:38:51

Java字符串整形

2021-04-16 10:45:02

SQLJava函數

2020-06-07 16:07:57

Python開發工具

2019-08-23 09:20:35

Spring 5編程Java

2018-03-01 07:11:16

2021-12-21 18:14:59

戴爾

2024-07-26 10:47:10

2021-06-23 15:03:55

Spring5PathPatternAntPathMatc

2021-12-10 08:17:48

字符串拼接場景

2017-07-12 09:46:00

5G社會網絡

2024-05-17 09:37:26

format屬性Spring

2022-02-17 11:29:17

數據治理項目數據使用

2011-06-27 08:35:28

2024-05-27 08:39:17

Vue3變量響應式

2021-01-21 14:50:01

微信紅包移動應用

2015-08-25 10:56:21

大數據

2022-07-07 14:18:43

SpringWeb應用設計

2021-07-24 13:16:31

Android 代碼操作系統

2018-01-03 15:35:13

人工智能區塊鏈虛擬偶像

2021-09-01 11:45:10

Spring循環依賴面試
點贊
收藏

51CTO技術棧公眾號

亚洲精品国产精品久久| 韩国欧美亚洲国产| 三上悠亚在线一区| 二区在线播放| 国产福利精品导航| 国内精品视频一区| 国产综合精品在线| 成人综合日日夜夜| 亚洲国产cao| 日本一区二区三区视频在线观看| 中文字幕久久网| 一级毛片免费高清中文字幕久久网| 精品三级在线观看| 国产精品亚洲二区在线观看| 免费黄色在线| www.欧美色图| 国产日本欧美视频| 日韩精品一区二区三区国语自制| 激情五月综合网| 欧美大片国产精品| 欧美日韩亚洲一二三| 1stkiss在线漫画| 久久久久久麻豆| 97自拍视频| 一二三区免费视频| 黄色成人在线网址| 日韩一区二区三区国产| 大地资源二中文在线影视观看| 六九午夜精品视频| 黑人精品xxx一区| 一级特黄妇女高潮| 国产福利在线看| 99久久精品免费看国产| 91久久久久久久一区二区| 国产一区二区99| 欧美日韩爆操| 久热精品视频在线免费观看 | 极品美女销魂一区二区三区免费| 97香蕉超级碰碰久久免费软件 | 日本一本在线视频| 姬川优奈av一区二区在线电影| 一区二区三区在线视频免费观看| 日韩欧美一区二区在线观看| 四季av日韩精品一区| 国产一区 二区 三区一级| 国产精品高潮呻吟久久av无限| 亚欧洲精品在线视频| 亚洲最新av| 久久久国产精品x99av | 超碰在线人人干| 精久久久久久久久久久| 国产成人久久精品| 久久久久久久极品| 一道本一区二区| 高清欧美性猛交xxxx| 加勒比婷婷色综合久久| 99久久.com| 菠萝蜜影院一区二区免费| 亚洲自拍偷拍图| 精品中文字幕一区二区三区av| 亚洲国产精品久久91精品| 日韩成人av影院| 欧美黄视频在线观看| 欧美剧在线免费观看网站| 99视频在线视频| 外国电影一区二区| 欧美视频一区在线观看| 亚洲一二三区av| 电影一区二区| 欧美日韩精品系列| 中文字幕第一页在线视频| 人人精品久久| 日韩午夜小视频| aaa黄色大片| 国产精品美女在线观看直播| 日韩电影第一页| 欧美bbbbb性bbbbb视频| 红桃成人av在线播放| 少妇高潮久久久久久潘金莲| 亚洲欧洲综合网| 中文字幕一区二区精品区| 欧美日韩国产成人| 国产极品在线播放| 欧美亚洲网站| 成人av电影天堂| 亚洲男人天堂久久| 91麻豆产精品久久久久久| 麻豆成人小视频| 国产大片在线免费观看| 亚洲三级免费观看| 97视频在线免费| 午夜日韩成人影院| 欧美精品在线一区二区三区| 久草福利在线观看| 亚洲va久久| 日韩一区二区三区国产| 日本在线视频免费观看| 日韩电影一区二区三区| 91在线免费看网站| 天堂91在线| 中文字幕亚洲在| 黄页免费在线观看视频| 国产精品蜜月aⅴ在线| 欧美成人午夜电影| 97人妻精品一区二区免费| 精品久久91| 欧美猛男性生活免费| 黄色片视频免费| 国产精品2024| 神马影院我不卡午夜| www在线看| 欧美精品v国产精品v日韩精品 | youjizzjizz亚洲| 一本久久综合亚洲鲁鲁| 69av.com| 蜜桃精品视频在线| 久久国产欧美精品| av片在线观看网站| 欧美图区在线视频| 风间由美一二三区av片| 自由日本语亚洲人高潮| 国产精品wwww| 五月婷中文字幕| 亚洲综合免费观看高清完整版 | 亚洲欧美一二三| 电影亚洲精品噜噜在线观看| 亚洲精品一区在线观看| 美国一级片在线观看| 99热在线精品观看| 粉嫩av一区二区三区免费观看| 2017亚洲天堂1024| 色婷婷久久一区二区三区麻豆| 久久久久无码国产精品一区李宗瑞| 欧美国产一区二区三区激情无套| 欧洲一区二区视频| 特黄视频在线观看| 亚洲图片欧美综合| 一级黄色免费毛片| 91综合在线| 国产精品久久久亚洲| 欧美日本韩国一区二区| 午夜精品福利一区二区蜜股av| 手机精品视频在线| 91精品国产乱码久久久久久久| 国产精品久久久久久久天堂| 蜜桃视频在线观看网站| 精品福利视频导航| 精品国产一区在线| 激情综合激情| 国产成人成网站在线播放青青| 亚洲精品天堂| 欧美大片拔萝卜| 青青草原免费观看| 国产精品2024| 农民人伦一区二区三区| 777久久精品| 久久人91精品久久久久久不卡| 韩国av免费在线| 亚洲一区二区三区四区在线观看| 男插女视频网站| 韩国久久久久| 久久精品日产第一区二区三区| 国产不卡123| 日韩精品福利在线| 国产一级淫片a视频免费观看| 久久综合久久鬼色| 日韩手机在线观看视频| 成人精品亚洲| 成人一区二区电影| 最新国产露脸在线观看| 欧美精品一区二区蜜臀亚洲| 久热这里只有精品6| 久久久国产精华| www.亚洲高清| 欧美一区二区三区久久精品| 超碰97在线资源| 男人天堂视频在线观看| 亚洲天堂免费视频| 91麻豆成人精品国产| 一区二区三区精品在线| 色综合久久五月| 日韩中文字幕不卡| 天堂v在线视频| 国产精品极品| 国产成人一区二| 成人免费看片| 亚洲国产精品高清久久久| 成人h动漫精品一区二区下载| 国产精品丝袜在线| 粗大的内捧猛烈进出视频| 亚洲精品韩国| 亚洲欧美日韩精品在线| 日韩影片在线观看| 秋霞成人午夜鲁丝一区二区三区| 91caoporn在线| 欧美成人欧美edvon| 波多野结衣绝顶大高潮| 亚洲少妇中出一区| 亚洲中文字幕无码av| 蜜桃在线一区二区三区| 成人黄色大片网站| 久久要要av| 国产日韩一区二区| 日本一区二区中文字幕| 98精品国产高清在线xxxx天堂| www.中文字幕久久久| 精品噜噜噜噜久久久久久久久试看| 久久精品视频7| 亚洲综合色丁香婷婷六月图片| 三年中国中文观看免费播放| 成人美女视频在线看| 亚洲xxx在线观看| 国产毛片一区| 日本精品福利视频| 欧美丝袜丝交足nylons172| 国产精品乱子乱xxxx| 亚洲国产天堂| 国产精品成人国产乱一区| 暧暧视频在线免费观看| 久久中文字幕视频| 国自产拍在线网站网址视频| 精品盗摄一区二区三区| 国产精品久久久久久免费免熟 | 国产精品护士白丝一区av| 尤物网站在线观看| 国产精品自拍av| 九九热99视频| 日本亚洲欧美天堂免费| 国产精品999视频| 欧美aa国产视频| 91社在线播放| 成人同人动漫免费观看| 免费在线国产精品| 另类图片第一页| 国产精品v欧美精品∨日韩| 综合久久av| 国产在线久久久| 国产资源一区| 国产精品户外野外| 欧美亚洲韩国| 欧洲成人在线观看| 天堂中文在线播放| 69久久夜色精品国产69| 91老司机福利在线| 97在线免费观看| 黄在线观看免费网站ktv| 欧美激情一区二区三区成人| 26uuu亚洲电影在线观看| 久久成人一区二区| 99热国产在线| 色综合久久久久久中文网| 亚洲wwwww| 欧美激情免费视频| 国产三级伦理在线| 97久久久久久| 亚洲妇女成熟| 国产99视频精品免视看7| 欧美日韩亚洲国产| 国产欧美日韩中文字幕| 亚洲国产天堂| 97se在线视频| 韩国精品福利一区二区三区 | 日韩精品视频在线观看一区二区三区| 亚洲护士老师的毛茸茸最新章节| 香蕉视频国产在线| 亚洲美女激情视频| yjizz视频网站在线播放| 色偷偷88888欧美精品久久久| 香蕉视频国产在线观看| 久久中文精品视频| 久久大胆人体| 51午夜精品视频| 日韩欧美精品电影| 成人激情av在线| 97精品久久| 欧美午夜精品久久久久免费视| 欧美综合视频| 日本免费成人网| 亚洲在线免费| 超碰超碰在线观看| 国产98色在线|日韩| 青青草成人免费视频| 日本一区二区在线不卡| 午夜精品福利在线视频| 五月天激情小说综合| 亚洲欧美日韩一区二区三区四区| 欧美日韩一区二区三区四区五区| 99精品人妻无码专区在线视频区| 精品粉嫩超白一线天av| 国产在线视频你懂得| 麻豆国产va免费精品高清在线| www.51av欧美视频| 国产精品美女无圣光视频| 狂野欧美xxxx韩国少妇| 久久精品美女| 欧美a级片一区| 亚洲色图38p| 粉嫩欧美一区二区三区高清影视| 亚洲熟妇无码av| 亚洲三级理论片| 国产精品视频免费播放| 在线播放91灌醉迷j高跟美女 | 欧美精品久久久久久久免费| 日本v片在线高清不卡在线观看| 日本黄色大片在线观看| 国产情人综合久久777777| 久久久精品国产sm调教| 欧美午夜精品久久久久久孕妇| 韩国av免费在线观看| 日韩一级黄色av| 欧美成人a交片免费看| 爱情岛论坛亚洲入口| 日韩欧美视频| 国产日韩一区二区在线| 国产精品2024| 亚洲精品电影院| 精品国产乱码久久久久久虫虫漫画| 91丨porny丨在线中文 | 草视频在线观看| 色综合久久六月婷婷中文字幕| 午夜精品久久久久久久91蜜桃| 中文字幕视频一区二区在线有码| 国产免费拔擦拔擦8x高清在线人 | 久久久久久美女| av一级久久| 亚洲高清在线观看一区| 午夜亚洲影视| 亚洲一区二区在线免费| 一区二区三区.www| 97精品人妻一区二区三区在线| 亚洲午夜精品视频| 日韩伦理在线一区| 国产99午夜精品一区二区三区| 66国产精品| 色乱码一区二区三区在线| 国产午夜一区二区三区| 国产一区二区99| 亚洲精品动漫100p| 黄页网站在线| av一区二区三区免费| 在线成人激情| 在线免费黄色小视频| 亚洲欧美日韩中文播放 | 欧亚一区二区| 日韩美女一区| 日韩精品电影在线| 人人爽人人爽人人片| 欧美亚洲日本国产| 东凛在线观看| 国产欧美韩国高清| 亚洲mv大片欧洲mv大片| www.51色.com| 夜夜亚洲天天久久| 蜜臀久久精品久久久久| 久久久久久尹人网香蕉| 粉嫩av一区二区| 欧美三级在线观看视频| 91免费国产在线| 免费看污视频的网站| 最好看的2019的中文字幕视频| 人人精品久久| 欧美久久在线观看| 99久久精品免费精品国产| www.久久久久久久| 日韩亚洲一区二区| 亚洲3区在线| 免费在线a视频| 国产欧美精品日韩区二区麻豆天美| 91麻豆视频在线观看| 欧美精品激情视频| 亚洲精品456| 911福利视频| 亚洲狠狠爱一区二区三区| 色视频在线观看| 国产精品亚洲一区二区三区| 亚洲自拍偷拍网| 性欧美成人播放77777| 欧美三级日韩三级国产三级| av网站在线免费| 免费国产在线精品一区二区三区| 琪琪一区二区三区| 久久久久免费看| 亚洲香蕉av在线一区二区三区| 小说区图片区亚洲| av电影一区二区三区| 日本欧美在线看| 婷婷综合在线视频| 日韩视频一区二区在线观看| 亚洲精品一区| 中国 免费 av| 久久伊人蜜桃av一区二区| 日本欧美www| 久久久亚洲精选| 久久99视频| 精品人妻无码中文字幕18禁| 欧美日韩激情视频| 尤物在线网址| 欧美三级网色| 丁香一区二区三区| 台湾佬中文在线|