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

这篇具有很好参考价值的文章主要介绍了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.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
    </dependency>

步骤2:PostMan发送JSON数据

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

步骤3:开启SpringMVC注解支持

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

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

步骤4:参数前添加@RequestBody

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

步骤5:启动运行程序

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

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

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

JSON对象数据

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

请求和数据的发送:

{
    "userName": "xiaochuang",
    "userAge": 20,
    "userSex": "man"
}

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

后端接收数据:

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

启动程序访问测试

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

说明:

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

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

{
    "userName": "xiaochuang",
    "userAge": 20,
    "userSex": "man",
    "city": {
        "country": "China",
        "provice": "ShangHai",
        "area": "PuDong"
    }
}

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

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

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"
        }
    }
]

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

后端接收数据:

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

启动程序访问测试

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

小结

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接收请求参数

项目代码

  • gitee 代码下载

  • github 代码下载文章来源地址https://www.toymoban.com/news/detail-417533.html

到了这里,关于SpringMVC项目请求(JSON数据传输参数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL 数据传输参数设置对数据一致性的影响

    作者通过全面系统的测试,揭秘 lower_case_table_names 设置对数据一致性的影响。 作者:刘安 爱可生测试团队成员,主要负责 DTLE 开源项目相关测试任务,擅长 Python 自动化测试开发。 本文来源:原创投稿 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编

    2024年02月12日
    浏览(56)
  • Python 自学 day06 JSON 数据传输,折线图,柱状图,动态柱状图

    1.1  什么是 JSON 答: JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据.                        JSON本质上是一个 带有特定格式的字符串。 1.2 JSON 的主要功能 答: json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递

    2024年02月16日
    浏览(39)
  • Data Transfer Object-DTO,数据传输对象,前端参数设计多个数据表对象

    用于在业务逻辑层和持久层(数据库访问层)之间传输数据。 DTO的主要目的是将多个实体(Entity)的部分属性或多个实体关联属性封装成一个对象,以便在业务层进行数据传输和处理,从而避免直接暴露实体对象给上层或客户端,即前端的请求设计了多张表的内容 使用步骤

    2024年02月15日
    浏览(98)
  • openAI 通过php方式 发送请求,流数据形式传输,php 实现chatGPT功能

    此处使用的框架是 symfony ,可自行根据自己框架开发,大同小异,框架无所谓,主要是功能! 先上代码 :

    2024年01月19日
    浏览(54)
  • 矢量数据无损压缩传输-geobuf(java项目分享)

    Hello小伙伴们,太太太久不更文了,研发太忙了没时间搞,技术性的文章肯定要有干货,今天小编就为大家带来干干干货~ 有段时间在朋友圈看见有朋友分享了他们的产品,其中有几个字眼让我影响深刻“集成了GeoBuf的功能”,让我不禁想探索探索GeoBuf是个啥东东,搜集了有关

    2023年04月12日
    浏览(51)
  • vue3项目使用WebSocket 传输 Protobuf 格式的数据

    前端和后端数据传输常用数据格式: JSON(JavaScript Object Notation):与 HTTP 协议和 REST API 配合使用时,JSON 数据是最常用的数据格式之一。对于 WebSocket,JSON 数据同样适用。客户端可以将消息转换为 JSON 对象,并将其发送到服务器进行处理,在服务器上生成响应并返回给客户端

    2024年02月10日
    浏览(53)
  • Openssl数据安全传输平台016:在QT中的数据库操作+在项目中的设计与实现

    在Qt中进行数据库操作需要使用的类: QSqlDataBase 属于的模块: sql 使用这个类可以创建出一个连接数据库服务器的实例 单例

    2024年02月06日
    浏览(50)
  • Openssl数据安全传输平台015:OCCI的使用方法+在项目中的设计与实现

    OCCI通过创建一个Environment的对象完成初始化工作。 可以通过Environment创建数据库连接,从而进行其它的操作 要创建Environment,应该调用Environment类的静态方法 createEnvironment() 连接数据库通过Connection类的对象实例实现 调用Environment类的**createConnection()**方法可以创建一个Connecti

    2024年02月06日
    浏览(49)
  • SpringMVC之获取请求参数和域对象共享数据

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包