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依赖

springmvc list接收参数 spring mvc 接收json数组参数_springmvc list接收参数

② PostMan 发送 JSON 数据

springmvc list接收参数 spring mvc 接收json数组参数_postman_02

③ 开启SpringMVC注解支持

在SpringMVC的配置类中开启SpringMVC的注解支持,这里面就包含了将JSON转换成对象的功能。

springmvc list接收参数 spring mvc 接收json数组参数_json_03

④ 参数前添加@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'}";
}

⑤ 启动运行测试接口

springmvc list接收参数 spring mvc 接收json数组参数_springmvc list接收参数_04

OK,没有问题,这就是JSON普通数组数据的传递

4.4.2 JSON 对象数据

请求和数据的发送

{
    "name":"itcast",
    "age":15
}

springmvc list接收参数 spring mvc 接收json数组参数_postman_05

后端接收数据

@RequestMapping("/pojoParamForJson")
    @ResponseBody
    public String pojoParamForJson(@RequestBody User user){
        System.out.println("pojo(json)参数传递 user ==> " + user);
        return "{'module':'pojo for json param'}";
    }

启动程序测试

springmvc list接收参数 spring mvc 接收json数组参数_JSON_06

OK,address为null的原因是前端没有传递数据给后端。

如果想要address也有数据,修改前端传递的数据内容:

{
    "name":"dingjiaxiong",
    "age": 22,
    "address":{
        "province":"sichuan",
        "city":"chengdu"
    }
}

springmvc list接收参数 spring mvc 接收json数组参数_json_07

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'}";
}

启动程序访问测试

springmvc list接收参数 spring mvc 接收json数组参数_java_08

OK。

【小结】

SpringMVC接收JSON数据的实现步骤为

  1. 导入jackson包
  2. 使用PostMan发送JSON数据
  3. 开启SpringMVC注解驱动,在配置类上添加@EnableWebMvc注解
  4. Controller方法的参数前添加@RequestBody注解

【知识点1:@EnableWebMvc】

springmvc list接收参数 spring mvc 接收json数组参数_springmvc list接收参数_09

【知识点2:@RequestBody】

springmvc list接收参数 spring mvc 接收json数组参数_JSON_10

【@RequestBody与@RequestParam的区别】

  • 区别
  • @RequestParam用于接收url地址传参,表单传参【application/x-www-formurlencoded】
  • @RequestBody用于接收json数据【application/json】
  • 应用
  • 后期开发中,发送json格式数据为主,@RequestBody应用较广
  • 如果发送非json格式数据,选用@RequestParam接收请求参数