使用AOP拦截Controller获取@PathVariable注解传入的参数
作者:徒手搬运工 发布时间:2023-04-30 21:42:09
标签:AOP拦截,Controller,@PathVariable,参数
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


猜你喜欢
- 前面有文章介绍了使用GridView实现表格的方法,本文就来说说如何用ListView实现自适应的表格。GridView比ListView更
- 1.预警需求为了更好的管理商品日期,需要对仓库的商品进行预警管理,对商品的保质期控制在一个范围内提示出来,也可以通过该功能间接的展示出一个商
- 前言:Timer是一个定时器,作为C#开发Timer控件是我们用的比较多的一个控件,它的功能很简单,但是也是值得我们去学习的一个知识点,今天
- private static char[] constant = &
- 本文实例为大家分享了java实现通讯录管理系统的具体代码,供大家参考,具体内容如下完成项目的流程:1.根据需求,确定大体方向 2.功能模块分
- 本文实例为大家分享了Android实现多条目加载展示的具体代码,供大家参考,具体内容如下展示效果依赖testCompile 'jun
- 在淘宝、京东等电商举办活动的时候,经常可以看到在移动客户端推出的各种刮奖活动,而这种活动也受到了很多人的喜爱。从客户端的体验来说,这种效果应
- 目录1、如果类的方法没有返回值,该方法的返回值类型应当是abstract。()2、代码String str=”123456a”;int i=
- 本文实例讲述了Android API开发之SMS短信服务处理和获取联系人的方法。分享给大家供大家参考,具体如下:Android API支持开
- 本文实例为大家分享了Android实现五子棋游戏的具体代码,供大家参考,具体内容如下实现环境: android studio 3
- Cookie和Session都是为了保持用户的访问状态,一方面为了方便业务实现,另一方面为了简化服务端的程序设计,提高访问性能。Cookie
- java应用CPU有波动,事后怎么分析?目前我采用的方案是根据CPU负载自动执行jstack,并将文件上传到OSS。 环境:阿里云
- 在本文中,对比了常见的几种反射的方法,介绍了它们分别应该如何使用,每种的简易度和灵活度,然后做了基准测试,一起看看这之间的性能差距。按照使用
- PC端与Android手机端使用adb forword通信服务器端代码如下:import java.io.IOException; impo
- using System;using System.Collections.Generic;using System.IO;using Sy
- 目录1.下列关于计算机系统和Java编程语言的说法,正确的是()2.变量a是一个64位有符号的整数,初始值用16进制表示为:0Xf00000
- static修饰符是java里面非常常用的一个东西,用法也非常多。然而,在kotlin里竟然没有这个东西!那该如何替代呢?本文就总结了下ja
- 1.嵌套类如果一个类只对另外一个类有作用,那么可以将其嵌入到该类中,使两个类在一起。和Java中定义的内部类很像。class Compute
- 一、使用注解实现自定义映射关系当POJO属性名与数据库列名不一致时,需要自定义实体类和结果集的映射关系,在MyBatis注解开发中,使用 @
- 一种可以设置滑动动画的控件,只显示一行布局,在布局文件中的ViewFlipper控件中顺序写好每一行的布局(1).MainActivity.