@RequestParam 接收的参数是来自requestHeader中,即请求头。通常用于GET请求。
1、findUser(String name)
2、findUser(@RequestParam String name)
3、findUser(@RequestParam("userName") String name)
第一种如果没有name 参数不会报错,
第二种没有name 参数会报错,(也可以设置required = false),
第三种跟第二种的区别是name 参数换为userName。
如果传的是数组
findUsers(List<Long> ids)
必须加上 @RequestParam,不然无法接收数组参数。
findUsers(@RequestParam List<Long> ids)
首先我们需要知道@RequestParam注解主要有哪些参数
value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。比如上图中第一个参数如果不设置value=“page”,则前端传入的参数名必须为pageNum,否则在后台接口中pageNum将接收不到对应的数据
required:该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。
defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。注意默认值可以使用SpEL表达式,如"#{systemProperties[‘java.vm.version’]}"
如果在请求中传入多个同名参数,比如:url?userName=zhl&userName=holley时怎么办?
其实此时传入的数据格式是:“zhl,holley”,即多个数据之间使用逗号分隔开,在后台接口中可以使用数组或者list类型的变量来接收:
@PathVariable绑定uri模板变量值:通过@PathVariable可以绑定占位符参数到方法参数中,例如:
如果请求为"url/info/16",则spring会自动将16绑定到通过@PathVariable注解的同名变量uid上
@CookieValue绑定Cookie数据值
@CookieValue用于将请求的Cookie数据映射到功能处理方法的参数上。
如上配置将自动将JSESSIONID值入参到sessionId参数上,defaultValue表示Cookie中没有JSESSIONID时默认为空。
传入参数类型也可以是javax.servlet.http.Cookie类型
测试代码在CookieValueTypeController中。@CookieValue也拥有和@RequestParam相同的三个参数,含义一样。