controller 接收Post传递数据
controller 接收Post传递数据
https://blog.csdn.net/weixin_42784951/article/details/106639657
字符串、基本类型
1、直接在方法形参中接收参数
直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。若"Content-Type"="application/x-www-form-urlencoded",可用post提交
url形式:http://localhost:8080/SSMDemo/demo/addUser1?username=lixiaoxi&password=111111 提交的参数需要和Controller方法中的入参名称一致。这种只可以将数据填在form表单中,使用Json字符串提交的时候会默认为null。
2、使用 @RequestBody String 形式接收:
@RequestBody 注解常用来处理 content-type 是 application/json 编码的内容,而不能用来处理 application/x-www-form-urlcoded 编码的内容。因此@RequestBody的时候应该使用Json形式传递:
{
"name" : "天天"
}
- 1
- 2
- 3
@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。我们可以通过如下实例看到:
@PostMapping("/test")
public Response TestBlackList(@RequestBody String blackRooms) {
System.out.println(blackRooms.getClass());
System.out.println(blackRooms);
return Response.success();
}
- 1
- 2
- 3
- 4
- 5
- 6
后台输出:
class java.lang.String
{
"blackRooms" : "1247,4545,5211"
}
- 1
- 2
- 3
- 4
这时我们要拿到对应的数据,就必须对所得到的字符串进行解析。
3、使用 Map
@PostMapping("/saveBlackRooms")
public Response saveBlackList(@RequestBody Map blackRooms) {
String blackRoomList = blackRooms.get("blackRoomList");
if (validateBlackList(blackRoomList)) {
PkMatchGlobalConfig pkMatchGlobalConfig = new PkMatchGlobalConfig();
pkMatchGlobalConfig.setBlackRoomList(blackRoomList);
return blackListService.saveGlobalConfig(pkMatchGlobalConfig);
}
return Response.error(-1, "请输入正确的黑名单房间格式");
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
@RequestBody的使用
Spring MVC源码---- @RequestBody和@ResponseBody原理解析
json对象、json字符串的区别和相互转换
四种常见的 POST 提交数据方式
pringBoot - 获取POST请求参数详解