• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

解决@PathVariable出现点号.时导致路径参数截断获取不全的问题

java 搞代码 4年前 (2022-01-05) 22次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了解决@PathVariable出现点号.时导致路径参数截断获取不全的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@PathVariable出现点号.时导致路径参数截断获取不全

1、问题

SpringMVC项目中通过下面的URL进行GET请求。当version有多个小数点的时候。如version为1.0.1008。后台通过@PathVariable来获取version等于1.0。会丢失部分数据。

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段后增加一个静态的字符段,这个段没有任何意义,可以为任意字符。

URL:

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

问题虽然解决了,但毕竟URL后多了个小尾巴,心情不愉悦。

再次谷哥。

参考:

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

URL不加小尾巴。

在@RequestMapping的value中使用SpEL来表示,value中的{version}换成{version:.+}。

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

终于可以再一次愉悦地进行玩耍了。

@PathVariable中带有.等特殊符号的处理方式

最近在项目中用到了

下载文件,有的文件url中,就带有.等

例如

 catalina.2019-05-07.log

假如用

 /download/{fileName} @PathVariable String fileName

则收到的名称就是catalina.2019-05-07,这是被springmvc自动移除最后的.以及后面的值

需要修改

使用如下即可正常

 /download/{fileName:.+} @PathVariable<b style="color:transparent">来源gao@!dai!ma.com搞$$代^@码网</b> String fileName

spring MVC从3.0开始支持REST,而主要就是通过@PathVariable来处理请求参数和路径的映射。

由于考虑到SEO的缘故,很多人喜欢把新闻的名称作为路径中的一部分去处理,这时候中文的名称就会遇到问题,没办法映射,这个是因为编码问题,只要到 TOMCAT/conf下找到server.xml,添加URIEncoding=”UTF-8”进行URL编码设置就可以解决中文问题。

另外经常遇到路径中有点”.”,而点是特殊字符,比如.html, .do等等,所以Spring MVC默认是把点后面的信息当作文件后缀,这时候我们就要修改这个默认值。

另外,这时候如果只设置这个,请求可以传递到对于的controller,但传过去的数据会有问题,只会传最后一个点前面的数据,除非你在最后加上“/”,比如/news/测试.点/ 这样就会把“测试.点”当作整体,不然只会得到“测试”。这时候我们可以这样设置@RequestMapping(“/news/{title:.*}”)

以上就是解决@PathVariable出现点号.时导致路径参数截断获取不全的问题的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:解决@PathVariable出现点号.时导致路径参数截断获取不全的问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址