@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的緣故,很多人喜歡把新聞的名稱作為路徑中的一部分去處理,這時候中文的名稱就會遇到問題,沒辦法映射,這個是因為編碼問題,只要到 TOMCAT/conf下找到server.xml,添加URIEncoding=”UTF-8”進(jìn)行URL編碼設(shè)置就可以解決中文問題。
另外經(jīng)常遇到路徑中有點”.”,而點是特殊字符,比如.html, .do等等,所以Spring MVC默認(rèn)是把點后面的信息當(dāng)作文件后綴,這時候我們就要修改這個默認(rèn)值。
另外,這時候如果只設(shè)置這個,請求可以傳遞到對于的controller,但傳過去的數(shù)據(jù)會有問題,只會傳最后一個點前面的數(shù)據(jù),除非你在最后加上“/”,比如/news/測試.點/ 這樣就會把“測試.點”當(dāng)作整體,不然只會得到“測試”。這時候我們可以這樣設(shè)置@RequestMapping(“/news/{title:.*}”)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Java代碼實現(xiàn)判斷春節(jié)、端午節(jié)、中秋節(jié)等法定節(jié)假日的方法
這篇文章主要介紹了基于Java代碼實現(xiàn)判斷春節(jié)、端午節(jié)、中秋節(jié)等法定節(jié)假日的方法 的相關(guān)資料,需要的朋友可以參考下2016-01-01SpringBoot實現(xiàn)定時任務(wù)和異步調(diào)用
這篇文章主要為大家詳細(xì)介紹了SpringBoot實現(xiàn)定時任務(wù)和異步調(diào)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04Java編程實現(xiàn)服務(wù)器端支持?jǐn)帱c續(xù)傳的方法(可支持快車、迅雷)
這篇文章主要介紹了Java編程實現(xiàn)服務(wù)器端支持?jǐn)帱c續(xù)傳的方法,涉及Java文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11