• SpringMVC项目请求(JSON数据传输参数)


    现在比较流行的开发方式为异步调用。前后台以异步方式进行交换,传输的数据使用的是JSON,所以前端如果发送的是JSON数据,后端该如何接收?

    对于JSON数据类型,我们常见的有三种:

    • json普通数组([“value1”,“value2”,“value3”,…])
    • json对象({key1:value1,key2:value2,…})
    • json对象数组([{key1:value1,…},{key2:value2,…}])

    对于上述数据,前端如何发送,后端如何接收?

    JSON普通数组

    步骤1:pom.xml添加依赖

    SpringMVC默认使用的是jackson来处理json的转换,所以需要在pom.xml添加jackson依赖

        <dependency>
          <groupId>com.fasterxml.jackson.coregroupId>
          <artifactId>jackson-databindartifactId>
          <version>2.9.8version>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    步骤2:PostMan发送JSON数据

    在这里插入图片描述

    步骤3:开启SpringMVC注解支持

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

    @Configuration
    @ComponentScan("com.dcxuexi.controller")
    //开启json数据类型自动转换
    @EnableWebMvc
    public class SpringMvcConfig {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    步骤4:参数前添加@RequestBody

    //使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象中作为数据
        @RequestMapping("/listjJsonParam")
        @ResponseBody
        public String listParamForJson(@RequestBody List<String> citys){
            System.out.println("Json List参数传递 citys ==> " + citys);
            return citys.toString();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    步骤5:启动运行程序

    在这里插入图片描述

    在这里插入图片描述

    JSON普通数组的数据就已经传递完成,下面针对JSON对象数据和JSON对象数组的数据该如何传递呢?

    JSON对象数据

    我们会发现,只需要关注请求和数据如何发送?后端数据如何接收?

    请求和数据的发送:

    {
        "userName": "xiaochuang",
        "userAge": 20,
        "userSex": "man"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    后端接收数据:

        @RequestMapping("/jsonParam")
        @ResponseBody
        public String userParamForJson(@RequestBody User user){
            System.out.println("Json参数传递 user ==> " + user);
            return user.toString();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    启动程序访问测试

    在这里插入图片描述

    说明:

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

    如果想要city也有数据,我们需求修改前端传递的数据内容:

    {
        "userName": "xiaochuang",
        "userAge": 20,
        "userSex": "man",
        "city": {
            "country": "China",
            "provice": "ShangHai",
            "area": "PuDong"
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    再次发送请求,就能看到city中的数据

    在这里插入图片描述

    JSON对象数组

    集合中保存多个POJO该如何实现?

    请求和数据的发送:

    [
        {
            "userName": "xiaochuang",
            "userAge": 20,
            "userSex": "man",
            "city": {
                "country": "China",
                "provice": "ShangHai",
                "area": "PuDong"
            }
        },
        {
            "userName": "zhangsan",
            "userAge": 18,
            "userSex": "man",
            "city": {
                "country": "China",
                "provice": "BeiJing",
                "area": "HaiDian"
            }
        },
        {
            "userName": "lily",
            "userAge": 22,
            "userSex": "woman",
            "city": {
                "country": "China",
                "provice": "AnHui",
                "area": "HeFei"
            }
        }
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这里插入图片描述

    后端接收数据:

        @RequestMapping("/userListParam")
        @ResponseBody
        public String userListParamForJson(@RequestBody List<User> userList){
            System.out.println("Json参数传递 userList ==> " + userList);
            return userList.toString();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    启动程序访问测试

    在这里插入图片描述

    小结

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

    (1)导入jackson包

    (2)使用PostMan发送JSON数据

    (3)开启SpringMVC注解驱动,在配置类上添加@EnableWebMvc注解

    (4)Controller方法的参数前添加@RequestBody注解

    知识点1:@EnableWebMvc

    名称@EnableWebMvc
    类型配置类注解
    位置SpringMVC配置类定义上方
    作用开启SpringMVC多项辅助功能

    知识点2:@RequestBody

    名称@RequestBody
    类型形参注解
    位置SpringMVC控制器方法形参定义前面
    作用将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

    @RequestBody与@RequestParam区别

    • 区别

      • @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
      • @RequestBody用于接收json数据【application/json】
    • 应用

      • 后期开发中,发送json格式数据为主,@RequestBody应用较广
      • 如果发送非json格式数据,选用@RequestParam接收请求参数

    项目代码

  • 相关阅读:
    逻辑回归(Logistic Regression)
    2022年《财富》世界500强排行榜
    【React】《React 学习手册 (第2版) 》笔记-Chapter5-在 React 中使用 JSX
    React之render
    EMC Unity存储系统如何查看SSD的使用寿命
    excel转换成pdf格式怎么操作?这3招教你Excel怎么转PDF
    【电源专题】降压转换器中的电感值如何选取
    国产+开源:可视化流程引擎助力企业建立流程管理体系
    ”linux学习之路” (感觉写的很好,更像是网络编程学习路线图)
    Java项目:基于jsp+sevlet+mysql日记系统
  • 原文地址:https://blog.csdn.net/qq_37726813/article/details/127697555