SpringMVC
4 请求与响应
文章目录
- SpringMVC
- 4 请求与响应
- 4.4 JSON 数据传输参数
- 4.4.1 JSON 普通数组
- 4.4.2 JSON 对象数据
- 4.4.3 JSON 对象数组
4.4 JSON 数据传输参数
前端如果发送的是JSON数据,后端该如何接收?
对于JSON数据类型,常见的有三种:
- json普通数组([“value1”,“value2”,“value3”,…])
- json对象({key1:value1,key2:value2,…})
- json对象数组([{key1:value1,…},{key2:value2,…}])
4.4.1 JSON 普通数组
① pom.xml添加依赖
SpringMVC默认使用的是jackson来处理json的转换,所以需要在pom.xml添加jackson依赖
② PostMan 发送 JSON 数据
③ 开启SpringMVC注解支持
在SpringMVC的配置类中开启SpringMVC的注解支持,这里面就包含了将JSON转换成对象的功能。
④ 参数前添加@RequestBody
@RequestMapping("/listParamForJson")
@ResponseBody
//使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
public String listParamForJson(@RequestBody List<String> likes){
System.out.println("list common(json)参数传递 list ==> " + likes);
return "{'module':'list common for json param'}";
}
⑤ 启动运行测试接口
OK,没有问题,这就是JSON普通数组数据的传递
4.4.2 JSON 对象数据
请求和数据的发送
{
"name":"itcast",
"age":15
}
后端接收数据
@RequestMapping("/pojoParamForJson")
@ResponseBody
public String pojoParamForJson(@RequestBody User user){
System.out.println("pojo(json)参数传递 user ==> " + user);
return "{'module':'pojo for json param'}";
}
启动程序测试
OK,address为null的原因是前端没有传递数据给后端。
如果想要address也有数据,修改前端传递的数据内容:
{
"name":"dingjiaxiong",
"age": 22,
"address":{
"province":"sichuan",
"city":"chengdu"
}
}
OK。
4.4.3 JSON 对象数组
集合中保存多个POJO 如何实现
请求和数据的发送
[
{"name":"dingjiaxiong","age":22},
{"name":"fengfeng","age":22}
]
后端接收数据
@RequestMapping("/listPojoParamForJson")
@ResponseBody
public String listPojoParamForJson(@RequestBody List<User> list){
System.out.println("list pojo(json)参数传递 list ==> " + list);
return "{'module':'list pojo for json param'}";
}
启动程序访问测试
OK。
【小结】
SpringMVC接收JSON数据的实现步骤为
- 导入jackson包
- 使用PostMan发送JSON数据
- 开启SpringMVC注解驱动,在配置类上添加@EnableWebMvc注解
- Controller方法的参数前添加@RequestBody注解
【知识点1:@EnableWebMvc】
【知识点2:@RequestBody】
【@RequestBody与@RequestParam的区别】
- 区别
- @RequestParam用于接收url地址传参,表单传参【application/x-www-formurlencoded】
- @RequestBody用于接收json数据【application/json】
- 应用
- 后期开发中,发送json格式数据为主,@RequestBody应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数