运用拦截器获取路径里面用@PathVariable这个注解接收的参数值

本文介绍了一种在Spring MVC框架中获取URL路径变量的方法。通过使用HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE属性,可以从请求中获取Map类型的路径变量。具体实现是将此属性作为参数传递给request.getAttribute()方法,然后通过get()方法指定Id关键字来获取具体的路径变量值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);  String Id = (String)pathVariables.get("Id");  

 

这句话就可以获取到值了

 

转自https://chembo.iteye.com/blog/2239730

### 使用 Spring Boot 中 PathVariable 和 正则表达式捕获 URL 路径后的完整字符串 在 Spring Boot 的 `@PathVariable` 注解中,可以通过定义正则表达式的模式来实现对路径变量的复杂匹配需求。为了捕获 URL 路径中完整的字符串(包括斜杠 `/` 后面的部分),可以利用 `{pathVar:regex}` 这种形式指定自定义正则表达式。 #### 实现方法 通过设置 `@RequestMapping` 或者 `@GetMapping` 方法参数中的 `@PathVariable` 来支持复杂的路径匹配逻辑。例如: ```java import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api") public class MyController { @GetMapping("/{fullPath:.+}") public String getFullPath(@PathVariable String fullPath) { return "Captured full path is: " + fullPath; } } ``` 上述代码片段展示了如何配置控制器以接收带有任意长度子路径的请求[^1]。其中 `.+` 是一个简单的正则表达式,表示至少有一个字符并允许任何后续字符序列,这使得它可以捕捉到整个剩余部分作为单个路径变量。 如果需要更精确控制哪些特殊字符被接受或者拒绝,则可以根据具体业务调整该正则表达式的内容。比如只允许字母数字加下划线以及内部可能存在的斜杠分隔符: ```java @GetMapping("/{fullPath:[a-zA-Z0-9/_-]+}") public String getCustomPattern(@PathVariable String fullPath){ return "Specific pattern captured: "+fullPath; } ``` 此版本限定了有效的输入范围为大小写字母、数字、连字符 `-`, 下划线 `_` 及 斜杠 `/` ,从而提高了安全性与数据一致性验证能力[^2]。 请注意,在实际开发过程中还需要考虑编码问题,特别是当涉及到国际化字符集时;另外也要小心处理潜在的安全隐患如目录遍历攻击等问题。 ### 注意事项 对于某些特定场景下的高级路由规则定制化需求而言,除了依靠标准 Restful API 设计原则之外,还可以探索其他机制诸如拦截器 (Interceptor),过滤器(Filter), 自定义解析器等手段进一步增强灵活性和功能性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值