在拦截器中获取 @PathVariable 的值
原创2019/2/25小于 1 分钟
在拦截器中获取 @PathVariable 的值
在 Spring Boot 或者 Spring MVC 中,如果有这样一个需求,需要在拦截器或者 AOP 里面去动态的获取 Controller 方法上的 @PathVariable 变量值,可以使用如下代码:
// Map中包含了本次请求中的所有变量值
Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
String test = (String)pathVariables.get("test");还可以通过随时随地获取 request 对象的方式:
RequestAttributes attr = RequestContextHolder.getRequestAttributes();
// 随时随地获取当前线程绑定的request
HttpServletRequest request = ((ServletRequestAttributes) attr).getRequest();
HttpServletResponse response = ((ServletRequestAttributes) attr).getResponse();
// 也可使用request也可不使用
Map map = (Map) attr.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE,RequestAttributes.SCOPE_REQUEST);
