@RequestParam详解——获取QueryString格式参数
获取QueryString格式参数(@RequestParam)
? QueryString(查询字符串)是指URL中?符号后面的参数部分。它通常用于在HTTP请求中传递参数给服务器。
比如:http://localhost:8080/test?q=apple&category=fruit? 其中,?之后的部分就是查询字符串,包括q=apple和category=fruits两个参数。
? 我们可以使用@RequestParam来获取QueryString格式的参数。
1.参数单独的获取
? @RequestParam把QueryString格式参数的参数绑定在方法的参数上,则想获取的参数单独的获取即把参数放在方法上即可。
? 在方法中定义方法参数,方法参数名要和请求参数名一致,这种情况下可以省略@RequestParam注解。
@GetMapping("/test")
 ? ?public String testRquestParam(Integer id, String name, String[] likes){
 ? ? ? ?System.out.println(id);
 ? ? ? ?System.out.println(name);
 ? ? ? ?System.out.println(Arrays.toString(likes));
 ? ? ? ?return "success";
 ?  }
?如果方法参数名和请求参数名不一致,我们可以加上@RequestParam注解例如:
 ? ?@GetMapping("/test")
 ? ?public String testRquestParam(@RequestParam("id") Integer uid,@RequestParam("name") String name, @RequestParam("likes")String[] likes){
 ? ? ? ?System.out.println(uid);
 ? ? ? ?System.out.println(name);
 ? ? ? ?System.out.println(Arrays.toString(likes));
 ? ? ? ?return "success";
 ?  }2.获取参数封装成实体对象
如果我们想把这些参数封装到一个User对象中可以使用如下写法:
 ?@GetMapping("/test")
 ? ?public String testRquestParam(User user){
 ? ? ? ?System.out.println(user);
 ? ? ? ?return "success";
 ?  }User类定义如下:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
 ? ?private Integer id;
 ? ?private String name;
 ? ?private String[] likes;
}测试时请求url如下:
http://localhost:8080/test?id=1&name=z&likes=唱&likes=跳注意:实体类中的成员变量要和请求参数名对应上。并且要提供对应的set/get方法。
2.1 相关注解其他属性
2.1.1?required
? ?代表是否必须,默认值为true也就是必须要有对应的参数。如果没有就会报错。
? ?如果对应的参数可传可不传则可以把其设置为fasle
例如:
? ?@GetMapping("/test")
 ? ?public String test(@RequestParam(value = "id",required = false) Integer uid,@RequestParam("name") String name, @RequestParam("likes")String[] likes){
 ? ? ? ?System.out.println(uid);
 ? ? ? ?System.out.println(name);
 ? ? ? ?System.out.println(Arrays.toString(likes));
 ? ? ? ?return "success";
 ?  }4.3.4.2 defaultValue
假如没有传对应的参数,可以用defaultValue属性设置默认值。
例如:
 ? ?@GetMapping("/test")
 ? ?public String test(@RequestParam(value = "id",required = false,defaultValue = "666") Integer uid,@RequestParam("name") String name, @RequestParam("likes")String[] likes){
 ? ? ? ?System.out.println(uid);
 ? ? ? ?System.out.println(name);
 ? ? ? ?System.out.println(Arrays.toString(likes));
 ? ? ? ?return "success";
 ?  }@RequestBody与@RequestParam()可以同时使用。
? 一个请求,只有一个@RequestBody,但是可以有多个@RequestParam。
?可以使用@RequestBody获取请求体中的json数据,然后使用@RequestParam获取url中的参数
@PostMapping("/test")
public String example(@RequestParam("id") Long id, @RequestBody User user) {
 ? ?// 处理逻辑
 ? ?return ?id + user.toString();
}用@RequestParam接收的参数:
url: localhost:8080/example?id=123用@RequestBody接收前端传的的json参数
Content-Type: application/json
?
{
 ? ?"name": "z",
 ? ?"age": 3
}? 注意:参数加了@RequestParam()的话,那么前端必须传对应参数值(不过可以设置required属性来调节是否必须传),否者会报错;如果参数前没有加@RequestParam()注解,那么前端可以传,也可以不传。
?——————————————————————————————————————————
其他Controller类常用的注解可以这个文章的汇总:Web开发Controller类详解-CSDN博客
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!