`

SpringMVC 请求路径结尾存在.使用@PathVariable访问路径内容,路径参数获取不准确的问题

 
阅读更多

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

 

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

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

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

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

@RequestMapping(value="module/download/apk/{version:.+}",method=RequestMethod.GET)
 @RequestMapping(value="viewFile/{module}/{filename:.+}",method=RequestMethod.GET)

 转载地址:https://www.cnblogs.com/banning/p/6226147.html

分享到:
评论

相关推荐

    SpringMVC@RequestMapping(重点)@RequestParam@PathVariable示例

    例如,你可以在一个方法中同时使用`@PathVariable`和`@RequestParam`来处理包含动态路径和请求参数的请求: ```java @GetMapping("/users/{userId}/books/{bookId}") public Book getUserBook(@PathVariable(...

    SpringMVC中使用@PathVariable绑定路由中的数组的方法

    SpringMVC 中使用 @PathVariable 绑定路由中的数组的方法 在 SpringMVC 中,使用 @PathVariable 绑定路由中的数组是一种常见的需求,特别是在批量删除功能时,需要传递一个数组给后台,以便删除多条数据。在本文中...

    spring mvc中的@PathVariable获得请求url中的动态参数

    使用`@PathVariable`时,需要注意输入的安全性,因为这些参数通常直接来源于用户请求,可能存在注入攻击的风险。你应该确保对这些参数进行适当的验证和清理,防止恶意输入。 4. **可选的动态参数**: 如果某些...

    SPRING MVC 的请求参数获取的几种方法

    1. 使用 @PathVariable 注解获取路径中传递参数 在 SPRING MVC 中,可以使用 @PathVariable 注解获取路径中传递的参数。例如: ```java @RequestMapping(value = "/{id}/{str}") public ModelAndView helloWorld(@...

    annotation-springMVC.rar_springmvc_springmvc API chm

    2. `@PathVariable`:用于从URL路径中获取值,常用于RESTful风格的接口。例如`@PathVariable("id") Long id`。 3. `@RequestBody`:用于将请求体中的JSON或XML数据转换为Java对象。配合Jackson库,可以自动将请求体...

    SpringMVC常用注解,返回方式,路径匹配形式.rar

    4. `@PathVariable`:用于从URL模板中获取参数。例如,`@GetMapping("/users/{userId}")`,`@PathVariable("userId")`可以获取URL中的`userId`值。 5. `@RequestParam`:用于从请求参数中获取值。如`@RequestParam...

    SpringMVC接收请求参数区别.docx

    在Spring MVC中,接收请求参数有多种方式,包括@RequestParam、@PathVariable、@RequestBody以及@ModelAttribute。这些注解各自适用于不同的场景,并且与HTTP请求的方法(GET、POST等)和Content-Type紧密相关。以下...

    SpringMVC.docx

    2. 使用`@PathVariable`获取URL路径变量。 3. 使用`@RequestParam`获取GET或POST请求参数。 4. 封装POJO对象,自动将请求参数映射到对象属性。 5. 获取cookie值。 6. 接收对象List集合,处理数组或集合类型的参数。 ...

    SpringMvc中获取 PathVariable的值的方式.docx

    但是这种方式只能获取到已经使用了`@PathVariable`注解的参数。 ```java @RequestMapping(value = "/del/{id}", method = RequestMethod.GET) public void del(HttpServletRequest request, @PathVariable("id")...

    SpringMVC 常用注解类视频详解

    4. `@PathVariable`:用于从URL路径中提取参数。比如,`@GetMapping("/users/{userId}")`中的`{userId}`,可以通过`@PathVariable("userId")`获取。 5. `@RequestParam`:处理HTTP请求参数。例如,`@PostMapping("/...

    SpringMVC注解开发的详解.doc

    除了基本的`@Controller`和`@RequestMapping`,SpringMVC还提供了许多其他注解来增强控制器的功能,如`@RequestParam`用于获取请求参数,`@PathVariable`用于获取URL路径变量,`@RequestBody`用于将请求体转换为Java...

    SpringMVC请求流程源码分析.doc

    ### SpringMVC请求流程源码分析 #### 一、SpringMVC使用与配置 ##### 1. 工程创建 为了构建一个支持SpringMVC框架的项目,首先需要创建一个Maven工程。在这个过程中,我们需要完成以下几个步骤: - **创建项目...

    SpringMVC例子注解

    在上面的例子中,`@PathVariable("id")`获取URL中的`id`参数。 5. `@RequestParam`: 用于从HTTP请求的查询参数中获取值。例如,如果你有一个`/search?query=keyword`的请求,`@RequestParam("query")`就能获取到`...

    springMVC注解大全

    4. `@PathVariable`:用于获取URL模板变量的值。例如,`@GetMapping("/users/{id}")`,`@PathVariable("id")`会捕获`{id}`部分的值。 5. `@RequestParam`:用于获取请求参数。例如,`@GetMapping("/users")`,`@...

    SpringMVC中注解的详细使用

    4. `@PathVariable`:用于从URL模板中提取值并将其绑定到方法参数上。例如,`@GetMapping("/users/{id}")`中的`{id}`会被替换为实际的请求参数。 5. `@RequestParam`:从请求参数中获取值,通常用于处理HTTP GET或...

    SpringMVC纯注解配置

    4. **@PathVariable**:用于获取URL路径变量的值,常用于RESTful API。 5. **@RequestParam**:处理HTTP请求参数,可以获取查询参数或表单参数。 6. **@ModelAttribute**:用于将请求参数绑定到模型对象,通常用于...

    SpringMVC之请求参数的获取方式.pdf

    通过`@PathVariable`注解获取,如`public String handle(@PathVariable Long userId) {...}`。确保参数存在且类型匹配,否则会抛出异常。 接下来,我们讨论POST请求参数的获取: 1. **HttpServletRequest方式**:...

    Springmvc注解使用一

    4. `@PathVariable`: 用于获取 URL 路径中的动态部分。在上面的例子中,`@PathVariable("id") Long id` 会将 URL 中的 `{id}` 部分赋值给 `id` 变量。 5. `@RequestParam`: 用于从请求参数中获取值。例如: ```...

    springmvc注解详解

    当 URL 包含动态部分时,如 `/users/{userId}`,`@PathVariable("userId")` 可以获取 `{userId}` 的值并将其作为方法参数。 ### 5. `@RequestParam` `@RequestParam` 用于从 HTTP 请求的查询参数中获取值。例如,`@...

Global site tag (gtag.js) - Google Analytics