可以使用在方法参数上的注解

我们在开发中,是不是要把前端的参数绑定到我们控制器的方法上,哪到底有哪些注解可以用呢?大部分人可能都只会用@RequestParam 、@PathVariable,其实还有其他的注解可以使用

@Value、@RequestParam 、@PathVariable、@RequestHeader、@CookieValue、@SessionAttributes、@ModelAttribute

前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

@RequestParam

用于获取参数,可获取?username="sss"这种?后面的参数值;将请求参数区数据映射到功能处理方法的参数上。

//在url中输入:localhost:8080/**/?userName=zhangsan
//请求中包含username参数(如/requestparam1?userName=zhang),则自动传入。
public String queryUserName(@RequestParam String userName)

进去这个注解的源码,我们会发现:

从上面我们可以看到name和value属性是互为别名的,所以,他们的值一定相等,都是用来表示入参的请求参数名字(?后面带),此时就需要知道[AliaFor][别名]注解的作用了,可以看我写的另一篇文章。

require 是表示是否一定要传参(默认是true,表示一定)

defaultValue 自定义一个默认值

注意点:控制器一定用包装类型来接受前端的入参,因为包装类可以接受null值

@PathVariable

绑定URI模板变量值,就是把占位符{}参数绑定到控制器方法上

@RequestMapping(value="/users/{userId}/topics/{topicId}")  
public String test(   @PathVariable(value="userId") int userId,    @PathVariable(value="topicId") int topicId) 

用法同上

@CookieValue

绑定Cookie数据值,将请求的Cookie数据映射到功能处理方法的参数上

public String test(@CookieValue(value="JSESSIONID", defaultValue="") String sessionId) 

如上配置将自动将JSESSIONID值入参到sessionId参数上,defaultValue表示Cookie中没有JSESSIONID时默认为空

用法同上

@RequestHeader

绑定请求头数据,用于将请求的头信息区数据映射到功能处理方法的参数上

@RequestMapping(value="/header")  
public String test(  
       @RequestHeader("User-Agent") String userAgent,  
       @RequestHeader(value="Accept") String[] accepts)

如上配置将自动将请求头“User-Agent”值入参到userAgent参数上,用法同上

其他,高级使用自己查看

@ModelAttribute绑定请求参数到命令对象
@SessionAttributes绑定命令对象到session
@Value绑定SpEL表示式结果映射到到功能处理方法的参数上。
[别名]: https://www.kuangstudy.com/bbs/1411159852545290242 “@AliasFor”

方法参数使用自定义注解的作用是为了自定义参数检查和修改参数内容。可以通过使用aop和自定义注解来实现这个功能。具体实现思路如下: 1. 使用aop切面拦截到带有自定义注解A的接口参数,并通过反射获取注解A参数的类字段集合。检查字段集合上的注解,如果被另一个注解B标识,则将其存储起来。 2. 将接口传入的json转换为jsonObject,并按照与步骤1相同的格式组织字段名称。 3. 如果发现字段名称与步骤1中存储的字段名称相同,则说明此字段需要修改值,直接修改jsonObject的对应值。 4. 返回修改后的json。 例如,在示例代码中,可以使用自定义注解MethodLog来标识需要记录操作描述的方法。通过aop拦截到带有MethodLog注解方法,并获取注解中的参数信息。然后可以根据需求对参数进行修改,例如可以通过另一个注解来指定需要修改的字段及其修改内容。 请注意,使用自定义注解修改方法参数的功能只适用于post请求的接口。需要使用aop来实现参数拦截和修改的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [controller接口参数使用自定义注解修改传入值](https://blog.csdn.net/weixin_44807009/article/details/126686565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Spring MVC 集成 AOP,自定义注解,在切面获得方法参数,以及自定义注解参数。](https://blog.csdn.net/qq_27093465/article/details/78800100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LC超人在良家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值