使用AOP拦截Controller获取@PathVariable注解传入的参数
作者:徒手搬运工 时间:2023-04-30 21:42:09
AOP拦截Controller获取@PathVariable注解传入参数
前言:
最近项目中需要对controller传入的应用标识(appMarkId)进行校验,appMarkId@PathVariable传入到url模版中的,这里用到了aop统一拦截处理,但是在拦截的过程中发现request获取不到该参数,随后进行了研究。
示例代码:
处理:
Map map = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
可以用这个方法获取到所有uri模版中传入的参数。
扩展: aop中获取request和response
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
HttpServletResponse response = servletRequestAttributes.getResponse();
动态参数使用@PathVariable解析
现在有如下的一条超链接
<a href="<c:url value=" rel="external nofollow" /actions/article/readArticle/${article.id}"/> "
target="_blank">${article.title}</a>
这条超链接的特点就是在URL路径中添加了EL表达式解析出来的id值。
因此,在SpringMVC的Controller层中,需要解析它,使用@PathVariable("articleId") Long articleId 来解析。
@PathVariable是专门用来解析URL请求中的动态参数。
在Controller层的代码如下
public static final String URL_ARTICLE_READ = "article/readArticle/{articleId}";
/**
* 去文章详情页面
* 根据URL路径中指定的文章ID号,去获取制定文章的内容
*
* @param articleId 指定的文章的ID号
* @return 获取此文章的数据,并去文章详情页面
*/
@RequestMapping(value = {URL_ARTICLE_READ} )
public ModelAndView readArticle(@PathVariable("articleId") Long articleId){
LOGGER.info("enter article detail page, articleId = {}",articleId);
final Article article = articleService.getArticleById(articleId);
...
}
这样,页面上的${article.id}的值,就最终映射到了Java中的Long articleId 上了。
来源:https://blog.csdn.net/IM507/article/details/99823318
标签:AOP拦截,Controller,@PathVariable,参数
0
投稿
猜你喜欢
Android studio4.1更新后出现的问题详解
2022-12-06 03:22:54
java和c/c++ 数据类型长度的比较
2021-06-18 00:07:45
详解SpringCloud的负载均衡
2022-03-14 03:42:28
基于spring 方法级缓存的多种实现
2022-12-14 18:31:38
Spring MVC 关于controller的字符编码问题
2023-06-17 09:52:52
springboot中.yml文件参数的读取方式
2021-06-20 00:57:51
java HashMap通过value反查key的代码示例
2022-06-07 08:50:55
Java多线程编程之访问共享对象和数据的方法
2022-10-01 07:05:02
Java中七种排序算法总结分析
2023-03-27 19:41:44
解决idea 暂存文件或idea切换分支代码丢失的问题
2023-09-11 07:52:41
Java线程的生命周期和状态控制_动力节点Java学院整理
2022-01-25 17:01:42
Java基础 Servlet监听器详解
2022-05-30 20:40:02
Mybatis代码生成器Mybatis Generator(MBG)实战详解
2023-12-02 23:04:31
Java面向对象实现汽车租赁系统
2023-05-20 07:03:06
Java常用HASH算法总结【经典实例】
2023-04-26 00:34:55
OnSharedPreferenceChangeListener详解及出现不触发解决办法
2021-10-25 19:06:36
C#计算程序执行过程花费时间的方法
2022-08-07 08:44:53
基于TCP通信丢包原因总结(推荐)
2022-04-27 04:37:28
C#中使用HttpDownLoadHelper下载文件实例
2023-05-13 13:13:14
深入浅析Android坐标系统
2021-12-15 05:26:34