后端接收Request请求参数的几种方式
原文地址:
https://blog.csdn.net/ShiuHB/article/details/109674343
1.直接在controller方法的形参中接收参数
@RequestMapping("/addUser1")
public String addUser1(String username,String password) {
System.out.println("username is:"+username);
System.out.println("password is:"+password);
return "demo/index";
}
这种方式前端传参需要将值写到url中,适用于get方式提交,不适用于post方式提交
2.@RequestParam注释
与第一种方式类似,加在形参前,可以对前端的参数做映射
三个参数:
- value:对应url中的参数名
- required:是否是必须的,默认为false
- defaultVaule:默认值
3.@PathVariable注释
与第二种方式类似,加在形参前,可以直接到url中取值
不同点:mapping中要有对应的占位符(REST风格)
@RequestMapping("/addUser1/{name}/{pwd}")
public String addUser1(@PathVariable("name") String username, @PathVariable("pwd") String password) {
System.out.println("username is:"+username);
System.out.println("password is:"+password);
return "demo/index";
}
- value:对应url中的参数名
- required:是否是必须的,默认为true
- 没有默认值
4.@RequestBody注释
用于接收body中的json串
@RequestMapping(value = "/method03")
public String method03(@RequestBody User user) {
return JSON.toJSONString(user);
}
注意实体类中的属性名称必须与JOSN串中的参数key名称完全一致,不同命参数无法正确接收;
使用此种方式推荐使用Post请求携带body参数,get请求虽然也可以携带body参数并请求成功但并不推荐这样操作
5.HttpServletRequest request接收参数
@RequestMapping("/method06")
public String method06(HttpServletRequest request) {
User user = new User();
user.setName(request.getParameter("name"));
user.setAge(Integer.valueOf(request.getParameter("age")));
user.setMoney(Double.parseDouble(request.getParameter("money")));
return JSON.toJSONString(user);
}
传统的接收参数方式,可以接收url params 传参,支持post from类型传参,不支持JSON传参
注意如果请求中未传递指定名称的参数,取参时会报错