SpringMvc中获取 PathVariable的值的方式.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
@RequestMapping(value = "/del/{id}", method = RequestMethod.GET) public void del(HttpServletRequest request, @PathVariable("id") Long id){ System.out.println(id); } 在Spring MVC框架中,`@PathVariable` 是一个用于从URL模板中提取占位符值的注解,这对于处理动态路由非常有用。以下是关于在Spring MVC中获取`PathVariable`的值的详细方法: ### 一、URL模板与`@PathVariable` 在URL模板中,大括号 `{}` 用于定义变量,例如 `/del/{id}`。这里的 `{id}` 是一个变量,它会在请求匹配到该路径时被替换为实际的值。`@PathVariable` 注解则用来将这个变量的值绑定到方法的参数上。 ```java @RequestMapping(value = "/del/{id}", method = RequestMethod.GET) public void del(HttpServletRequest request, @PathVariable("id") Long id) { System.out.println(id); } ``` 在这个例子中,当用户发起一个 GET 请求到 `/del/123`,`id` 参数就会被赋值为 `123`。 ### 二、使用`@PathVariable`获取值 1. **直接通过`@PathVariable`注解获取**: 这是最直接的方式,如上面的例子所示,直接在方法参数前加上`@PathVariable`,并指定对应的变量名。`@PathVariable`后面的字符串("id")必须与URL模板中的占位符一致。 2. **通用`@PathVariable`注解批量获取**: 当需要获取多个`PathVariable`时,可以使用`NativeWebRequest`对象。但是这种方式只能获取到已经使用了`@PathVariable`注解的参数。 ```java @RequestMapping(value = "/del/{id}", method = RequestMethod.GET) public void del(HttpServletRequest request, @PathVariable("id") Long id) { NativeWebRequest webRequest = new ServletWebRequest(request); Map<String, Object> map = (Map<String, Object>) webRequest.getAttribute(View.PATH_VARIABLES, RequestAttributes.SCOPE_REQUEST); System.out.println(map.get("id")); } ``` ### 三、批量获取`PathVariable`的值 1. **不依赖`@PathVariable`注解批量获取**: 如果你想获取所有URL模板变量,而不关心它们是否已经被注解,你可以使用`HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE`来获取所有变量的Map。 ```java @RequestMapping(value = "/del/{id}", method = RequestMethod.GET) public void del(HttpServletRequest request) { NativeWebRequest webRequest = new ServletWebRequest(request); Map<String, String> map = (Map<String, String>) webRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST); System.out.println(map.get("id")); } ``` 在这个例子中,无论URL模板中有多少个变量,你都可以通过`map`获取到它们的所有值。 Spring MVC提供了灵活的方式来处理URL中的动态部分,无论是单个还是批量获取,都能满足不同场景的需求。在实际开发中,根据具体的应用场景选择合适的方法进行处理,可以提高代码的可读性和维护性。
- 粉丝: 253
- 资源: 1940
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助