记一个使用@PathVariable的坑

记一个使用@PathVariable的坑

  • 发现问题
  • 解决过程
  • 解决方案
    • 第一种
    • 第二种
    • 第三种
    • 第四种

发现问题

前端路径拼接用户名,因为用户名中是带’.‘这个字符的。类似’Oliver.wang’。前端浏览器F12,发现路径正常拼接’xxxxxx/Oliver.wang?xxx=xxx’,后端代码发现,controller层的参数,接收到只有’Oliver’。

解决过程

在方法中多加了一个参数(xxx,HttpServletRequest request){},输出request.ServletPath(),发现路径正常’/xxx/xxx/Oliver.wang’。

解决方案

第一种

加上 {:.+} ,比如 @getMapping(“xxx/{name:.+}”)

第二种

UrlEncode

第三种

request.ServletPath() 拿到路径截取字符串

第四种

不拼接路径,改成’xxxxx?name=Oliver.wang’ 请求参数

你可能感兴趣的:(记一个使用@PathVariable的坑)