@PathVariable獲取路徑中帶有 / 斜杠的解決方案
@PathVariable獲取路徑中帶“/”斜杠
問(wèn)題
訪問(wèn)路徑
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開(kāi)始支持REST,而主要就是通過(guò)@PathVariable來(lái)處理請(qǐng)求參數(shù)和路徑的映射。
由于考慮到SEO的緣故,很多人喜歡把新聞的名稱(chēng)作為路徑中的一部分去處理,這時(shí)候中文的名稱(chēng)就會(huì)遇到問(wèn)題,沒(méi)辦法映射,這個(gè)是因?yàn)榫幋a問(wèn)題,只要到 TOMCAT/conf下找到server.xml,添加URIEncoding=”UTF-8”進(jìn)行URL編碼設(shè)置就可以解決中文問(wèn)題。
另外經(jīng)常遇到路徑中有點(diǎn)”.”,而點(diǎn)是特殊字符,比如.html, .do等等,所以Spring MVC默認(rèn)是把點(diǎn)后面的信息當(dāng)作文件后綴,這時(shí)候我們就要修改這個(gè)默認(rèn)值。
另外,這時(shí)候如果只設(shè)置這個(gè),請(qǐng)求可以傳遞到對(duì)于的controller,但傳過(guò)去的數(shù)據(jù)會(huì)有問(wèn)題,只會(huì)傳最后一個(gè)點(diǎn)前面的數(shù)據(jù),除非你在最后加上“/”,比如/news/測(cè)試.點(diǎn)/ 這樣就會(huì)把“測(cè)試.點(diǎn)”當(dāng)作整體,不然只會(huì)得到“測(cè)試”。這時(shí)候我們可以這樣設(shè)置@RequestMapping(“/news/{title:.*}”)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法
本文主要介紹了springboot項(xiàng)目配置logback-spring.xml實(shí)現(xiàn)按日期歸檔日志的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
Spring Boot 3.x 全新的熱部署配置方式詳解(IntelliJ ID
這篇文章主要介紹了Spring Boot 3.x 全新的熱部署配置方式(IntelliJ IDEA 2023.1),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
什么情況下會(huì)出現(xiàn)java.io.IOException?:?Broken?pipe這個(gè)錯(cuò)誤以及解決辦法
這篇文章主要介紹了什么情況下會(huì)出現(xiàn)java.io.IOException?:?Broken?pipe這個(gè)錯(cuò)誤以及解決辦法的相關(guān)資料,這個(gè)錯(cuò)誤表示通信另一端已關(guān)閉連接,常發(fā)生在客戶(hù)端關(guān)閉連接、網(wǎng)絡(luò)超時(shí)或資源不足等情況,文中將解決辦法介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10
Netty分布式高性能工具類(lèi)recycler的使用及創(chuàng)建
這篇文章主要為大家介紹了Netty分布式高性能工具類(lèi)recycler的使用和創(chuàng)建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03

