@PathVariable獲取路徑中帶有 / 斜杠的解決方案
@PathVariable獲取路徑中帶“/”斜杠
問題
訪問路徑
http://192.168.10.243:1018/hpt/v2/photo/link/2021/7/headimage/super18909261952.jpg,需要獲取/link/2021/7/headimage/super18909261952.jpg值
解決方案
@RequestMapping(value = “/v2/photo/{photoName}/**”, produces = “/;charset=utf-8”, consumes = “/;charset=utf-8”) public void getImageFromNetByUrl(@PathVariable String photoName, HttpServletRequest request, HttpServletResponse response) throws Exception { final String pathq = request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE).toString(); final String bestMatchingPattern = request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE).toString(); String arguments = new AntPathMatcher().extractPathWithinPattern(bestMatchingPattern,pathq); String moduleName; if(null!= arguments&&!arguments.isEmpty()){ moduleName = photoName +'/'+ arguments; } else { moduleName = photoName; } System.out.println("moduleName"+moduleName); }
moduleName就是需要的值;
@PathVariable 包含.等特殊字符異常
spring MVC從3.0開始支持REST,而主要就是通過@PathVariable來處理請求參數(shù)和路徑的映射。
由于考慮到SEO的緣故,很多人喜歡把新聞的名稱作為路徑中的一部分去處理,這時候中文的名稱就會遇到問題,沒辦法映射,這個是因?yàn)榫幋a問題,只要到 TOMCAT/conf下找到server.xml,添加URIEncoding=”UTF-8”進(jìn)行URL編碼設(shè)置就可以解決中文問題。
另外經(jīng)常遇到路徑中有點(diǎn)”.”,而點(diǎn)是特殊字符,比如.html, .do等等,所以Spring MVC默認(rèn)是把點(diǎn)后面的信息當(dāng)作文件后綴,這時候我們就要修改這個默認(rèn)值。
另外,這時候如果只設(shè)置這個,請求可以傳遞到對于的controller,但傳過去的數(shù)據(jù)會有問題,只會傳最后一個點(diǎn)前面的數(shù)據(jù),除非你在最后加上“/”,比如/news/測試.點(diǎn)/ 這樣就會把“測試.點(diǎn)”當(dāng)作整體,不然只會得到“測試”。這時候我們可以這樣設(shè)置@RequestMapping(“/news/{title:.*}”)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Java代碼實(shí)現(xiàn)判斷春節(jié)、端午節(jié)、中秋節(jié)等法定節(jié)假日的方法
這篇文章主要介紹了基于Java代碼實(shí)現(xiàn)判斷春節(jié)、端午節(jié)、中秋節(jié)等法定節(jié)假日的方法 的相關(guān)資料,需要的朋友可以參考下2016-01-01SpringBoot實(shí)現(xiàn)定時任務(wù)和異步調(diào)用
這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)定時任務(wù)和異步調(diào)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04實(shí)例講解Java編程中數(shù)組反射的使用方法
這篇文章主要介紹了Java編程中數(shù)組反射的使用方法,通過編寫數(shù)組反射工具類可以重用許多基礎(chǔ)代碼,減少對類型的判斷過程,需要的朋友可以參考下2016-04-04Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法(可支持快車、迅雷)
這篇文章主要介紹了Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法,涉及Java文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11