欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問(wèn)題

 更新時(shí)間:2021年08月17日 11:18:35   作者:ibenben.org  
這篇文章主要介紹了解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全

1、問(wèn)題

SpringMVC項(xiàng)目中通過(guò)下面的URL進(jìn)行GET請(qǐng)求。當(dāng)version有多個(gè)小數(shù)點(diǎn)的時(shí)候。如version為1.0.1008。后臺(tái)通過(guò)@PathVariable來(lái)獲取version等于1.0。會(huì)丟失部分?jǐn)?shù)據(jù)。

URL:

http://host_ip/consumer/appVersion/phone/android/download/{version}

Controller:

@RequestMapping(value="android/download/{version}",method=RequestMethod.GET)
public void download(HttpSession session,HttpServletResponse response,@PathVariable("version")String version){
}

2、解決方案

在version段后增加一個(gè)靜態(tài)的字符段,這個(gè)段沒(méi)有任何意義,可以為任意字符。

URL:

http://host_ip/consumer/appVersion/phone/android/download/{version}/static_str

問(wèn)題雖然解決了,但畢竟URL后多了個(gè)小尾巴,心情不愉悅。

再次谷哥。

參考:

http://stackoverflow.com/questions/3526523/spring-mvc-pathvariable-getting-truncated

URL不加小尾巴。

在@RequestMapping的value中使用SpEL來(lái)表示,value中的{version}換成{version:.+}。

@RequestMapping(value="android/download/{version:.+}",method=RequestMethod.GET)
public void download(HttpSession session,HttpServletResponse response,@PathVariable("version")String version){
}

終于可以再一次愉悅地進(jìn)行玩耍了。

@PathVariable中帶有.等特殊符號(hào)的處理方式

最近在項(xiàng)目中用到了

下載文件,有的文件url中,就帶有.等

例如

catalina.2019-05-07.log

假如用

/download/{fileName}
@PathVariable String fileName

則收到的名稱(chēng)就是catalina.2019-05-07,這是被springmvc自動(dòng)移除最后的.以及后面的值

需要修改

使用如下即可正常

/download/{fileName:.+}
@PathVariable String fileName

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)文章

最新評(píng)論