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)
分享到:
相关推荐
例如,你可以在一个方法中同时使用`@PathVariable`和`@RequestParam`来处理包含动态路径和请求参数的请求: ```java @GetMapping("/users/{userId}/books/{bookId}") public Book getUserBook(@PathVariable(...
SpringMVC 中使用 @PathVariable 绑定路由中的数组的方法 在 SpringMVC 中,使用 @PathVariable 绑定路由中的数组是一种常见的需求,特别是在批量删除功能时,需要传递一个数组给后台,以便删除多条数据。在本文中...
使用`@PathVariable`时,需要注意输入的安全性,因为这些参数通常直接来源于用户请求,可能存在注入攻击的风险。你应该确保对这些参数进行适当的验证和清理,防止恶意输入。 4. **可选的动态参数**: 如果某些...
1. 使用 @PathVariable 注解获取路径中传递参数 在 SPRING MVC 中,可以使用 @PathVariable 注解获取路径中传递的参数。例如: ```java @RequestMapping(value = "/{id}/{str}") public ModelAndView helloWorld(@...
2. `@PathVariable`:用于从URL路径中获取值,常用于RESTful风格的接口。例如`@PathVariable("id") Long id`。 3. `@RequestBody`:用于将请求体中的JSON或XML数据转换为Java对象。配合Jackson库,可以自动将请求体...
4. `@PathVariable`:用于从URL模板中获取参数。例如,`@GetMapping("/users/{userId}")`,`@PathVariable("userId")`可以获取URL中的`userId`值。 5. `@RequestParam`:用于从请求参数中获取值。如`@RequestParam...
在Spring MVC中,接收请求参数有多种方式,包括@RequestParam、@PathVariable、@RequestBody以及@ModelAttribute。这些注解各自适用于不同的场景,并且与HTTP请求的方法(GET、POST等)和Content-Type紧密相关。以下...
2. 使用`@PathVariable`获取URL路径变量。 3. 使用`@RequestParam`获取GET或POST请求参数。 4. 封装POJO对象,自动将请求参数映射到对象属性。 5. 获取cookie值。 6. 接收对象List集合,处理数组或集合类型的参数。 ...
但是这种方式只能获取到已经使用了`@PathVariable`注解的参数。 ```java @RequestMapping(value = "/del/{id}", method = RequestMethod.GET) public void del(HttpServletRequest request, @PathVariable("id")...
4. `@PathVariable`:用于从URL路径中提取参数。比如,`@GetMapping("/users/{userId}")`中的`{userId}`,可以通过`@PathVariable("userId")`获取。 5. `@RequestParam`:处理HTTP请求参数。例如,`@PostMapping("/...
除了基本的`@Controller`和`@RequestMapping`,SpringMVC还提供了许多其他注解来增强控制器的功能,如`@RequestParam`用于获取请求参数,`@PathVariable`用于获取URL路径变量,`@RequestBody`用于将请求体转换为Java...
### SpringMVC请求流程源码分析 #### 一、SpringMVC使用与配置 ##### 1. 工程创建 为了构建一个支持SpringMVC框架的项目,首先需要创建一个Maven工程。在这个过程中,我们需要完成以下几个步骤: - **创建项目...
在上面的例子中,`@PathVariable("id")`获取URL中的`id`参数。 5. `@RequestParam`: 用于从HTTP请求的查询参数中获取值。例如,如果你有一个`/search?query=keyword`的请求,`@RequestParam("query")`就能获取到`...
4. `@PathVariable`:用于获取URL模板变量的值。例如,`@GetMapping("/users/{id}")`,`@PathVariable("id")`会捕获`{id}`部分的值。 5. `@RequestParam`:用于获取请求参数。例如,`@GetMapping("/users")`,`@...
4. `@PathVariable`:用于从URL模板中提取值并将其绑定到方法参数上。例如,`@GetMapping("/users/{id}")`中的`{id}`会被替换为实际的请求参数。 5. `@RequestParam`:从请求参数中获取值,通常用于处理HTTP GET或...
4. **@PathVariable**:用于获取URL路径变量的值,常用于RESTful API。 5. **@RequestParam**:处理HTTP请求参数,可以获取查询参数或表单参数。 6. **@ModelAttribute**:用于将请求参数绑定到模型对象,通常用于...
通过`@PathVariable`注解获取,如`public String handle(@PathVariable Long userId) {...}`。确保参数存在且类型匹配,否则会抛出异常。 接下来,我们讨论POST请求参数的获取: 1. **HttpServletRequest方式**:...
4. `@PathVariable`: 用于获取 URL 路径中的动态部分。在上面的例子中,`@PathVariable("id") Long id` 会将 URL 中的 `{id}` 部分赋值给 `id` 变量。 5. `@RequestParam`: 用于从请求参数中获取值。例如: ```...
当 URL 包含动态部分时,如 `/users/{userId}`,`@PathVariable("userId")` 可以获取 `{userId}` 的值并将其作为方法参数。 ### 5. `@RequestParam` `@RequestParam` 用于从 HTTP 请求的查询参数中获取值。例如,`@...