zoukankan      html  css  js  c++  java
  • SpringMVC 请求路径结尾存在.使用@PathVariable访问路径内容,路径参数获取不准确的问题

    SpringMVC采用Get方式请求资源时,如果请求路径的结尾中带有小数点(.)时,同时使用@PathVariable访问路径内容时,请求路径中最后一个小数点及其后面的内容会被Spring截断丢弃
    比如针对版本的访问:
        对于请求路径:
            http://host:port/program/module/download/apk/3.20.10
        后端RequestMapping为
       

    1 @RequestMapping(value="module/download/apk/{version}",method=RequestMethod.GET)
    2 public void download(HttpSession session,HttpServletResponse response,@PathVariable("version")String version){
    3     //解析后获得到的版本值为:3.20
    4 }


    又比如针对文件的访问
        对于请求路径:
            http://host:port/program/viewFile/module/201612201231445.pdf
        后端RequestMapping为
       

    1 @RequestMapping(value="viewFile/{module}/{filename}",method=RequestMethod.GET)
    2 public void viewFile(HttpSession session,HttpServletResponse response,@PathVariable String module, @PathVariable String filename){
    3     //解析后获得到的文件名称为201612201231445并没有或追文件后缀
    4 }


    在确实需要使用以小数点的路径进行请求的话可以选择如下两种解决方案:
        1、在路径后加任意小数点结尾的字符串
            http://host:port/program/module/download/apk/3.20.10.html
            http://host:port/program/viewFile/module/201612201231445.pdf.jsp
        2、使用Spring正则表达式(SpEL)
           

    1 @RequestMapping(value="module/download/apk/{version:.+}",method=RequestMethod.GET)
    2 @RequestMapping(value="viewFile/{module}/{filename:.+}",method=RequestMethod.GET)
  • 相关阅读:
    【转】异常处理模块
    【转】整套完整安全的API接口解决方案
    百度地图API功能集锦
    VS2015 使用Razor编写MVC视图时,Razor智能提示消失,报各种红线解决方案。
    算法初涉-解决比9*9数独更复杂的结构
    SQL时间相关
    ubuntu 安装
    dwa 设置多个目标点,倒车设计
    ros 信号周期的简单实现
    C++学习记录 第一章:初始
  • 原文地址:https://www.cnblogs.com/banning/p/6226147.html
Copyright © 2011-2022 走看看