精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

草莓福利社区在线| 欧美超碰在线观看| 岛国精品一区| 亚洲无吗在线| 欧美色网一区二区| 亚洲欧洲精品一区| www.色亚洲| 久久久久综合| 欧美精品在线免费观看| 欧美精品欧美极品欧美激情| 欧美午夜三级| 激情成人在线视频| 特级毛片在线免费观看| 午夜成人免费影院| 国产美女精品人人做人人爽| 91高潮精品免费porn| 国精产品一区一区| 欧美午夜寂寞| 日韩视频不卡中文| 国产成人手机视频| av电影在线免费| 综合亚洲深深色噜噜狠狠网站| 国产在线精品日韩| 国产视频aaa| 欧美a级理论片| 26uuu亚洲国产精品| 亚洲av无码一区二区三区在线| 亚洲男人都懂第一日本| 日韩欧美不卡一区| 两个人看的在线视频www| 日本天码aⅴ片在线电影网站| 99成人精品| 日韩亚洲精品电影| 天天躁日日躁狠狠躁av| 少妇精品视频在线观看| 色综合亚洲欧洲| 日韩欧美猛交xxxxx无码| 亚洲免费视频一区二区三区| 久久综合九色综合欧美98| 福利视频一区二区三区| 99国产精品久久久久久久成人 | 亚洲欧美综合另类中字| 动漫av在线免费观看| 亚洲成人高清| 欧美丰满美乳xxx高潮www| 欧美激情精品久久久久久小说| 少妇人妻精品一区二区三区| 国产乱子轮精品视频| 国产精品丝袜视频| 神马久久久久久久久久久| 国产伦乱精品| 精品国产乱码久久久久久老虎| 亚洲色欲久久久综合网东京热| 黄网站免费在线播放| 中文字幕成人在线观看| 国产一区二中文字幕在线看| 国产精品无码一区| 97精品国产| 在线视频日韩精品| 免费一级特黄3大片视频| 欧美一区二区三区高清视频| 一区二区三区四区视频| 国产亚洲精品精品精品| 99久久亚洲精品蜜臀| 久久综合久中文字幕青草| 波多野结衣爱爱视频| 精品动漫3d一区二区三区免费版 | 国产 日韩 欧美在线| 欧美男男激情freegay| 26uuuu精品一区二区| 欧美三级华人主播| 成人一区二区不卡免费| 欧美韩国一区二区| 伊甸园精品99久久久久久| www视频在线免费观看| 亚洲午夜久久久久久久久久久| 日韩视频免费播放| 国模一区二区| 亚洲一区欧美一区| 日本在线xxx| 欧美成人黑人| 欧美一级欧美三级| 星空大象在线观看免费播放| 免费成人网www| 日韩视频免费大全中文字幕| 久久久91视频| 六月丁香综合| 成人免费午夜电影| 日韩有码第一页| 国产清纯在线一区二区www| 国产对白在线播放| 美女高潮在线观看| 欧美精品123区| 日韩av无码一区二区三区不卡| 欧美精品momsxxx| 久久亚洲精品一区| 天天操天天干视频| 韩国成人精品a∨在线观看| 国产精品大全| 免费观看在线午夜影视| 黄色精品在线看| 不卡中文字幕在线观看| 欧美偷窥清纯综合图区| 久久精品成人欧美大片| 中文字幕在线观看视频网站| 精品一区二区三区在线播放视频| 国产亚洲自拍偷拍| 免费在线观看av| 欧美日韩国内自拍| 巨乳女教师的诱惑| 欧美精品一区二区三区中文字幕 | 国产一区二区网址| 欧美乱偷一区二区三区在线| 污污网站在线观看| 欧美性生交片4| 国产h视频在线播放| 日本电影在线观看| 在线观看www91| 精品人妻一区二区三区日产| 在线电影一区二区| 国产精品对白刺激| 五月婷婷狠狠干| 亚洲综合激情另类小说区| 精品999在线| 国产亚洲人成a在线v网站| 亚洲国产精品资源| 久热这里有精品| 激情成人午夜视频| 亚洲国产午夜伦理片大全在线观看网站| 不卡av免费观看| 欧美丰满嫩嫩电影| 精品国产大片大片大片| 日韩成人一级片| 国产精品中文字幕在线观看| 亚洲日本在线播放| 午夜精品久久久久久久| 日韩在线一级片| 超碰在线亚洲| 欧美大片在线看| 国产特级aaaaaa大片| 国产精品国产三级国产aⅴ入口| 亚洲 国产 日韩 综合一区| 亚洲人成在线网站| 精品视频久久久久久| 影音先锋亚洲天堂| a美女胸又www黄视频久久| 青青在线免费观看| 成人看片爽爽爽| 中文字幕高清不卡| 99精品国产一区二区| 国产精品偷伦一区二区| 在线观看亚洲黄色| 久久婷婷综合激情| 国产亚洲精品久久久优势| wwwxxx黄色片| 色老板在线视频一区二区| 久久免费国产精品1| 黄色av中文字幕| 26uuu国产在线精品一区二区| 国产精品国产亚洲精品看不卡| 超碰成人在线观看| 亚州精品天堂中文字幕| 亚洲日本香蕉视频| 色婷婷综合在线| 正在播放国产对白害羞| 韩日欧美一区二区三区| 成人午夜视频免费观看| 久久97精品| 日本精品免费观看| 香蕉视频在线播放| 日韩一区二区三区四区五区六区| 九九九免费视频| 成人成人成人在线视频| 国产av无码专区亚洲精品| 三级电影一区| 成人性色av| av电影一区| 自拍偷拍亚洲一区| 超碰在线观看99| 一本色道久久综合精品竹菊| 色婷婷粉嫩av| 成人爱爱电影网址| 五月婷婷之综合激情| 这里只有精品在线| 亚洲欧洲在线免费| 久久99精品波多结衣一区| 国产婷婷色一区二区三区| 色婷婷.com| 啪一啪鲁一鲁2019在线视频| 亚洲天堂国产视频| 91精品国产福利在线观看麻豆| 欧美伊人久久久久久午夜久久久久| 国产精品1000部啪视频| 欧美亚洲大陆| 国产精品日韩在线观看| 日本中文字幕中出在线| 亚洲欧美在线第一页| 国产精品羞羞答答在线| 国产午夜精品理论片a级大结局| 欧美第一页浮力影院| 亚洲视屏一区| 亚洲一卡二卡区| 精品丝袜久久| 成人a视频在线观看| 九色porny丨入口在线| 色婷婷久久av| 欧美黄色小说| 日韩精品一区二区三区视频在线观看 | jizzyou欧美16| 97精品视频在线观看| 激情视频在线观看| 国产一区av在线| 日韩一级在线播放| 欧美电影一区二区| 国产午夜麻豆影院在线观看| 亚洲自拍偷拍麻豆| 91香蕉视频污在线观看| 久久久久久亚洲综合| av天堂一区二区| 国产麻豆午夜三级精品| 一路向西2在线观看| 性伦欧美刺激片在线观看| 国产精品videossex国产高清 | 秋霞影院一区| 欧美精品一区二区免费| 高清在线观看av| 日韩av在线网页| 懂色av蜜臀av粉嫩av分享吧| 91精品国产美女浴室洗澡无遮挡| 中文字幕欧美在线观看| 91久久国产综合久久| 中文字幕超碰在线| 亚洲a一区二区| 久久久www成人免费毛片| 18成人在线视频| 91精品国产91久久久久久久久| 国产免费av一区| 亚洲一区中文在线| 性色av无码久久一区二区三区| 中文字幕第一页久久| 中国女人特级毛片| 久久久久久久久久久久久久久99| 中文在线一区二区三区| 成人av影院在线| 女性生殖扒开酷刑vk| 成人一区二区视频| 中文精品一区二区三区| 第一会所sis001亚洲| 亚欧精品在线| 欧美r级电影| 伊人久久大香线蕉精品| 精品国产青草久久久久96| 婷婷久久综合九色综合绿巨人 | 亚洲成人久久电影| avtt天堂在线| 一区二区三区四区精品在线视频| 亚洲色婷婷一区二区三区| 一区二区久久久久久| 久久久久久久伊人| 欧美视频二区36p| 国产精品免费无遮挡无码永久视频| 在线亚洲一区二区| 一级全黄少妇性色生活片| 亚洲国产精品精华液网站| 免费在线一区二区三区| 午夜精品久久久久久久久久| 天堂网中文字幕| 欧美亚洲丝袜传媒另类| 91麻豆国产在线| 欧美一级片在线看| 亚洲精品一区二区三区区别| 日韩国产精品一区| av女优在线| 欧美精品一区在线播放| 九色porny丨首页入口在线| 清纯唯美亚洲激情| 全球最大av网站久久| 91在线精品视频| 成人福利片在线| 亚洲伊人第一页| 任你躁在线精品免费| 亚洲欧美日韩综合一区| 精品成人免费| 男女视频在线看| 国产91精品在线观看| 国产伦理片在线观看| 亚洲男帅同性gay1069| 69精品无码成人久久久久久| 亚洲欧美另类在线| 五月婷婷中文字幕| 欧美精品18+| 欧美女同网站| 欧美俄罗斯乱妇| 日本一道高清亚洲日美韩| 99视频在线| 欧美激情另类| 亚洲欧洲日产国码无码久久99 | youjizz.com日本| 久久久91精品国产一区二区三区| 国产一区二区三区在线视频观看| 日韩欧美国产成人| 国产黄色片免费观看| 国产一区二区三区直播精品电影 | 日韩av电影在线免费播放| 欧美日韩午夜电影网| 国产精品美女久久久久av超清| 精品欧美视频| 五月天久久综合网| 最新亚洲视频| 精品视频免费在线播放| 久久国产人妖系列| 久久人人爽人人爽人人片| 91在线你懂得| 美女的奶胸大爽爽大片| 在线免费av一区| 婷婷视频在线观看| 久久国产色av| 亚洲精品tv| 少妇特黄a一区二区三区| 宅男噜噜噜66国产日韩在线观看| 激情成人在线观看| 国产高清不卡一区| 国产在线综合视频| 图片区小说区国产精品视频| 国产高清在线观看视频| 日韩一级黄色av| 嫩草伊人久久精品少妇av杨幂| 久久久久成人精品免费播放动漫| 欧美区国产区| 天天操,天天操| 国产精品毛片a∨一区二区三区| 亚洲AV无码成人精品区东京热| 亚洲国产欧美精品| 欧美寡妇性猛交xxx免费| 91在线观看免费| 人人爽人人爽人人片| 亚洲国产视频a| 高清一区二区三区四区| 九九热99久久久国产盗摄| 亚洲欧洲二区| 在线观看日本一区| 麻豆久久久久久久| 午夜激情福利电影| 欧美日韩久久久| 蜜桃视频网站在线| 成人久久18免费网站图片| 91一区二区| 国产大片一区二区三区| 亚洲美女屁股眼交3| 国产成人精品a视频| 久久99精品久久久久久琪琪| 伊人久久影院| 99久久国产综合精品五月天喷水| 成人av网站在线| 国产又黄又爽又色| 亚洲片国产一区一级在线观看| 向日葵视频成人app网址| 五月天国产一区| 国产一区二区三区av电影| 国产十六处破外女视频| 精品国产91乱码一区二区三区| 波多野结衣在线高清| 国产一区喷水| 日本不卡123| 日韩成人短视频| 亚洲电影免费观看高清| 色在线视频观看| 午夜精品短视频| 国产精一区二区三区| 亚洲激情视频一区| 亚洲日本中文字幕免费在线不卡| 国产精品66| 国产视频在线观看网站| 久久夜色精品国产欧美乱极品| 天堂网中文字幕| 久久久精品久久| 久久a爱视频| 国产一级特黄a大片免费| 国产成人欧美日韩在线电影| 精品在线视频观看| 亚洲视频在线免费观看| 二区三区精品| 国产精品国产亚洲精品看不卡| 中文字幕欧美日韩一区| 亚洲精华国产精华精华液网站| 琪琪第一精品导航| 五月精品视频| 在线观看av中文字幕| 欧美日韩在线精品一区二区三区激情| 日本在线视频www鲁啊鲁| 欧美日韩在线精品一区二区三区| 国产一区二三区| 国产成人无码一区二区在线播放| 美女精品视频一区| 九九免费精品视频在线观看| 国产美女视频免费看| 欧美日韩亚洲精品一区二区三区| 岛国中文字幕在线| 欧美精品在线一区| 成人夜色视频网站在线观看|