我们在开发中,是不是要把前端的参数绑定到我们控制器的方法上,哪到底有哪些注解可以用呢?大部分人可能都只会用@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”