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

Spring Boot 請求路徑可以定義成 /**/** 這種格式嗎?

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

前兩天松哥和大家分享了 Spring Security 中如何實現權限通配符的功能,里邊用到了一個“邪門歪道” AntPathMatcher,有小伙伴對這個感到陌生,問松哥能不能單獨介紹一下這個玩意,好,安排!

不過 AntPathMatcher 其實在逐漸過時,它的替代品是 PathPattern,我就把這兩個放在一起和大家分享下。

Spring5 也已經出來好久了,里邊有一些新玩法也需要我們去慢慢揭開面紗,其中,系統分析當前請求路徑的方法位于這里:org.springframework.web.servlet.handler.AbstractHandlerMapping#initLookupPath:

protected String initLookupPath(HttpServletRequest request) {
if (usesPathPatterns()) {
request.removeAttribute(UrlPathHelper.PATH_ATTRIBUTE);
RequestPath requestPath = ServletRequestPathUtils.getParsedRequestPath(request);
String lookupPath = requestPath.pathWithinApplication().value();
return UrlPathHelper.defaultInstance.removeSemicolonContent(lookupPath);
}
else {
return getUrlPathHelper().resolveAndCacheLookupPath(request);
}
}

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

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

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

String lookupPath = initLookupPath(request);

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

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

1. AntPathMatcher

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

@GetMapping("/hello/**/hello")
public String hello() {
return "/hello/**/hello";
}
@GetMapping("/h?llo")
public String hello2() {
return "/h?llo";
}
@GetMapping("/**/*.html")
public String hello3() {
return "/**/*.html";
}
@GetMapping("/hello/{p1}/{p2}")
public String hello4(@PathVariable String p1, @PathVariable String p2) {
System.out.println("p1 = " + p1);
System.out.println("p2 = " + p2);
return "/hello/{p1}/{p2}";
}
@GetMapping("/{name:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{ext:\\.[a-z]+}")
public void handle(@PathVariable String name, @PathVariable String version, @PathVariable String ext) {
System.out.println("name = " + name);
System.out.println("version = " + version);
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 風格路徑匹配:

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

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

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

因此,才有了 Spring5 中的 PathPattern。

2. 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 變量,例如如下一個接口:

@GetMapping("/javaboy/{*path}")
public void hello6(@PathVariable String path) {
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 里邊沒有這個。

3. 如何使用

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

@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setPatternParser(new PathPatternParser());
}
}

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

4. 小結

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

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

2021-07-28 10:30:09

UPS電源服務器

2022-08-26 01:02:31

接口privateSpring

2022-12-12 11:42:12

定義接口private

2021-04-16 11:02:40

Spring BootprivateJava

2021-08-13 08:36:15

SpringMVC自定義

2022-11-10 07:53:54

Spring參數校驗

2024-10-14 17:18:27

2023-09-19 22:41:30

控制器HTTP

2022-06-09 08:30:59

Istiospring clo

2023-11-27 08:57:24

GoGET

2021-03-07 16:41:06

URLSpring5

2023-02-13 08:10:40

Gateway網關Spring

2020-09-30 08:26:33

Spring Boot

2021-08-11 05:00:48

Spring 日志手段

2024-05-31 14:04:18

2023-12-04 07:27:54

SpringMVC方法

2024-08-01 09:10:03

2018-11-19 14:29:17

Spring BootXML支持

2024-07-31 15:57:41

2024-10-15 10:28:43

點贊
收藏

51CTO技術棧公眾號

国产精品九九九| 精品色蜜蜜精品视频在线观看| 国产精品久久激情| 亚洲熟女毛茸茸| 91丨精品丨国产| 亚洲三级在线观看| 国内视频一区| 最近中文字幕免费观看| 综合日韩在线| 亚洲免费一级电影| 美女黄色片视频| 免费在线超碰| 久久福利视频一区二区| 久久免费视频这里只有精品| 91成人在线免费视频| 久久久精品区| 91精品办公室少妇高潮对白| 黄色小视频大全| 艳母动漫在线看| 激情小说亚洲一区| 人人澡人人澡人人看欧美| 国产美女精品在线观看| 400部精品国偷自产在线观看| www.久久久久久| 美女爽到呻吟久久久久| 欧美成年人网站| 亚洲日本精品视频| 97青娱国产盛宴精品视频| 在线观看亚洲精品视频| 给我免费播放片在线观看| av基地在线| 成人福利电影精品一区二区在线观看 | 99精品国产99久久久久久白柏| 国产精品专区第二| 国产精品100| 午夜精品婷婷| www.国产一区| 久久国产柳州莫菁门| 久久a爱视频| 欧美一区二区三区视频免费播放| 国产视频在线视频| 中老年在线免费视频| 亚洲精品国产一区二区精华液| 日本中文不卡| 亚洲精品综合久久| 国产精品99久久久久久久女警 | 成人444kkkk在线观看| 一级黄色片网址| 亚洲警察之高压线| 精品国产sm最大网站| japan高清日本乱xxxxx| 欧美日韩破处视频| 欧美午夜一区二区三区免费大片| 各处沟厕大尺度偷拍女厕嘘嘘| 91黄页在线观看| 洋洋成人永久网站入口| 黄色一级大片免费| 91黄色在线| 亚洲久草在线视频| 亚洲精品天堂成人片av在线播放| 蜜桃视频在线观看www社区| 欧美激情在线看| 色狠狠久久av五月综合| 国际av在线| 欧美国产精品一区| 午夜精品美女久久久久av福利| 人人九九精品| 久久精品亚洲精品国产欧美kt∨| 久久青青草原一区二区| 欧美91精品久久久久国产性生爱| 久久伊99综合婷婷久久伊| 精品视频一区二区三区四区| 在线观看xxx| 97精品久久久午夜一区二区三区 | 洋洋成人永久网站入口| a级黄色小视频| 美女的胸无遮挡在线观看| 精品av在线播放| 久久人妻精品白浆国产| 成人自拍av| 欧美高清精品3d| 中文字幕永久免费| 日韩成人一级| 国产一区二区三区在线播放免费观看 | 丝袜亚洲欧美日韩综合| 中文字幕无码日韩专区免费 | 免费看又黄又无码的网站| 97人人模人人爽人人澡| 成人18在线| 国产精品久久久久aaaa樱花| 一级全黄肉体裸体全过程| 免费污视频在线| 精品久久久久久久久久久久久久 | 午夜三级在线观看| 国产专区一区| 国产成人精品一区| 国产精品熟女久久久久久| 成人小视频免费观看| 日本电影一区二区三区| gogo在线观看| 富二代精品短视频| 一女二男3p波多野结衣| 嗯用力啊快一点好舒服小柔久久| 亚洲美女av网站| 黄色香蕉视频在线观看| 一区二区三区国产在线| 国产一区二区视频在线观看| 欧美视频xxx| 国产精品网曝门| 91成人在线观看喷潮教学| 成人精品国产| 日韩精品在线私人| 日本中文在线视频| 国产免费成人| 99精品国产高清在线观看| 免费在线国产| 亚洲成人免费在线| 久久精品一卡二卡| 国产欧美亚洲精品a| 亚洲色欲色欲www| 欧美在线一区二区三区四| 91精品在线视频观看| wwwwxxxxx欧美| 超碰97在线看| 国产精品久久乐| 亚洲男人天堂视频| xxxx 国产| 国产在线日韩欧美| 日本精品国语自产拍在线观看| 欧洲精品二区| 91麻豆精品91久久久久同性| 国产综合精品在线| 午夜在线一区| 国产精品麻豆免费版| 91cn在线观看| 欧美情侣在线播放| 青娱乐国产视频| 西西人体一区二区| 精品国产乱码一区二区三区四区| 手机av免费在线| 正在播放一区二区| 懂色av粉嫩av蜜臀av一区二区三区| 亚洲综合精品四区| 精品国产一区二区三区四区精华| 午夜影院免费在线| 制服丝袜亚洲播放| 99久久精品久久亚洲精品| 西西人体一区二区| 北条麻妃高清一区| 麻豆网站视频在线观看| 色视频成人在线观看免| 日b视频在线观看| 欧美精品麻豆| 99在线视频免费观看| 理论片午午伦夜理片在线播放| 日本精品视频一区二区| 亚洲激情 欧美| 国产一区二区三区四区老人| 97超级碰碰| sm国产在线调教视频| 欧美日韩成人激情| eeuss中文字幕| 天使萌一区二区三区免费观看| 亚洲a级在线观看| av观看在线| 欧美一区二区大片| 国产一二三区精品| 国产乱妇无码大片在线观看| 亚洲图片欧美激情| 免费高清在线观看免费| 福利片一区二区| 国内精品久久久久久中文字幕| 国内老熟妇对白xxxxhd| 亚洲精品视频观看| www.天天射.com| 成人毛片免费看| 国产精品一区专区欧美日韩| 成人av毛片| 7777精品伊人久久久大香线蕉最新版| 免费视频91蜜桃| 美女视频黄久久| 一本色道久久综合亚洲二区三区 | 99sesese| 香蕉久久网站| 成人精品一二区| 51精品在线| 精品国一区二区三区| 日本一区二区网站| 久久久蜜桃精品| 99视频精品免费| 日韩一区二区在线免费| 国产精品一区二区三区免费视频| 欧美私人网站| 日韩你懂的在线播放| 69av视频在线| 99视频在线观看一区三区| 国产极品美女高潮无套久久久| 波多野结衣在线播放一区| 成人看片人aa| 国产偷倩在线播放| 亚洲男女自偷自拍图片另类| 91美女精品网站| 一区二区三区欧美亚洲| 99久久免费看精品国产一区| 久久最新视频| 黄色影视在线观看| 蜜桃成人av| 91日韩在线播放| 国产伦理精品| 最近日韩中文字幕中文| 成人激情四射网| 欧美特级www| 免费中文字幕视频| 国产三级一区二区| 91人人澡人人爽| 日韩综合在线视频| 中文精品无码中文字幕无码专区| 国产成人精品福利| 91成人理论电影| 婷婷午夜社区一区| 欧美国产精品va在线观看| 黄色片在线播放| 亚洲精品wwwww| 97人妻人人澡人人爽人人精品 | 国产黄色片免费看| 亚洲欧美综合在线精品| 亚洲 欧美 日韩在线| 久久精品国产第一区二区三区| 男人天堂网视频| 色综合咪咪久久网| 久久国产精品免费一区| 秋霞一区二区| 国产精品欧美风情| 久草在线中文最新视频| 久久精品美女视频网站 | 久久嫩草精品久久久精品| 欧美专区第二页| 日韩制服丝袜先锋影音| 久久综合久久网| 欧美日韩亚洲一区二区三区在线| 欧美精品一区三区在线观看| 一区视频网站| 成人精品一区二区三区电影免费| 在线精品亚洲欧美日韩国产| 91精品国产高清自在线| 青青草视频在线免费直播| 日韩福利视频网| 国产乱码精品一区二区三区日韩精品| 丰满的护士2在线观看高清| 美女久久久久久久| 欧美日韩在线资源| 日韩中文字幕久久| 久草视频在线看| 亚洲国产天堂久久国产91| www.99视频| 91精品久久久久久久久99蜜臂| 中文字幕一级片| 精品女厕一区二区三区| 日本韩国欧美中文字幕| 性感美女久久精品| 动漫精品一区一码二码三码四码| 亚洲精品中文在线观看| 免费在线观看黄色av| 夜夜精品视频一区二区| 男人操女人的视频网站| 亚洲三级在线看| 久久这里只有精品国产| 一区二区三区欧美久久| 欧洲猛交xxxx乱大交3| 亚洲伦在线观看| 国精产品久拍自产在线网站| 亚洲免费成人av| 美国黄色小视频| 一区二区三区av电影| 国内偷拍精品视频| 性欧美疯狂xxxxbbbb| 青青草av在线播放| 高跟丝袜欧美一区| 极品国产91在线网站| 欧美日韩国产电影| 国产毛片毛片毛片毛片| 日韩欧美国产精品| 手机看片一区二区三区| 亚洲无限av看| 欧美激情免费| 色综合久久精品亚洲国产| 欧美性猛片xxxxx免费中国| 欧美孕妇孕交黑巨大网站| 五月天激情播播| 国产亚洲午夜| 午夜激情福利在线| 国产精品一区二区黑丝| 欧美激情 亚洲| 91美女蜜桃在线| 99久久99久久精品免费| 一区二区成人在线视频| 羞羞影院体验区| 欧美日韩国产高清一区二区三区| 国产高中女学生第一次| 亚洲欧美日韩视频一区| 91在线视频免费看| 精品中文字幕在线| 免费成人在线电影| 成人精品视频久久久久| 久久午夜影院| 亚洲国产精品一区二区第一页| 亚洲自拍偷拍网| 国产精品无码av在线播放| 强制捆绑调教一区二区| 精品国产免费久久久久久婷婷| 久久免费美女视频| 精品少妇久久久| 在线观看日产精品| 成人av手机在线| 亚洲午夜色婷婷在线| 国产黄色大片在线观看| 国产精品成人在线| 亚洲一区二区三区免费| 精品日韩美女| 日韩精品永久网址| 99热在线这里只有精品| 久久精品国产77777蜜臀| av黄色免费网站| 一区二区三区四区在线播放| 欧美性受xxx黑人xyx性爽| 亚洲成人精品在线| 奇米视频888| 中日韩视频在线观看| 午夜免费看视频| av成人动漫在线观看| 午夜精品一区二区三区视频| 色久优优欧美色久优优| 国产成人自拍一区| 久久91亚洲人成电影网站 | 亚洲国产日韩精品| 一级黄色免费看| 国产午夜精品一区二区三区| 电影一区二区三区| 国产精品免费一区二区三区四区 | av电影天堂一区二区在线观看| 女教师淫辱の教室蜜臀av软件| 五月天丁香久久| 亚洲av无码一区二区乱子伦| 欧美成aaa人片在线观看蜜臀| 嫩草伊人久久精品少妇av杨幂| 国产一区二区高清视频| 小小影院久久| 亚洲国产欧美91| 中文字幕一区免费在线观看| 制服丝袜在线一区| 这里只有精品在线观看| 成人午夜精品| 欧美激情第六页| 99国产精品视频免费观看一公开| 涩视频在线观看| 一区二区三区在线播| 国产精品高潮呻吟av| 麻豆乱码国产一区二区三区| 亚洲精品aa| 国产系列第一页| 国产一区二区三区久久久| 登山的目的在线| 7777精品久久久大香线蕉| 外国精品视频在线观看 | 亚洲成人最新网站| 美女喷白浆视频| 国产精品丝袜在线| 中文字幕777| 中文字幕在线成人| 伊人亚洲精品| 亚洲精品天堂成人片av在线播放| 国产成人在线视频网址| 欧美成欧美va| 精品久久久久99| 超碰97国产精品人人cao| 亚洲一区二区三区在线免费观看| 欧美激情一区| 中文字幕第3页| 精品久久久久久久久中文字幕| 黄色在线小视频| 国产精品入口免费视| 久久综合国产| 天天综合成人网| 亚洲最新视频在线观看| 欧美一区二区黄片| 日本成熟性欧美| 欧美色爱综合| 亚洲在线观看网站| 一区二区三区精品在线| 亚洲欧美日韩免费| 国产精品日韩在线播放| 中文字幕免费一区二区| 国产精品一区二区入口九绯色| 91高清视频免费看| 巨大荫蒂视频欧美另类大| 国产一区二区在线观看免费播放| 美女久久一区| 国产一二三四区| 亚洲欧美制服另类日韩| 伊人久久大香伊蕉在人线观看热v|