Spring MVC JSON 数据交互

🔔

JSON 语法 | 菜鸟教程

为实现浏览器与控制器类之间的 JSON 数据交互,

Spring MVC 提供了 MappingJackson2HttpMessageConverter 实现类默认处理 JSON 格式请求响应。该实现类利用 Jackson 开源包读写 JSON 数据,将 Java 对象转换为 JSON 对象和 XML 文档,同时也可以将 JSON 对象和 XML 文档转换为 Java 对象。

在使用注解开发时需要用到两个重要的 JSON 格式转换注解,

分别是 @RequestBody @ResponseBody

  • @RequestBody:用于将请求体中的数据绑定到方法的形参中,该注解应用在方法的形参上

  • @ResponseBody:用于直接返回 return 对象,该注解应用在方法上。

1.1 引入jackson

项目依赖于:

jackson-databind-2.12.0.jar jackson-annotations-2.12.0.jar jackson-core-2.12.0.jar

在pom.xml文件中只需要加入下面的依赖 其它两个会自动下载

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.0</version>
</dependency>

1.2 编写POJO

@Data
public class Good {String name;double price;int num;
}

1.3 编写Controller

@Controller
public class GoodController {@PostMapping("/goods")public ModelAndView test(@RequestBody Good good){ModelAndView mv=new ModelAndView();mv.addObject("msg","商品名称:"+good.getName()+",商品价格:"+good.getPrice()+",商品数量:"+good.getNum());mv.setViewName("good");return mv;} //使用idea中 RestfulTool工具插件设置//假如写了一个相同的地址会执行哪一个?@GetMapping("/goods")public Good test2(){Good g=new Good();g.setName("苹果");g.setPrice(89);g.setNum(20);return g;}@RequestMapping(value = "/good/save",method={RequestMethod.POST})@ResponseBodypublic Good save(@RequestBody Good good){System.out.println(good.toString());return good;}
}

good页面:

<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %>
<html>
<body>
<h1>商品详情页</h1>
<p>${msg}</p>
</body>
</html>

1.4 Map接收

@RequestMapping(value = "/good/save2",method={RequestMethod.POST})
@ResponseBody
public Map test (@RequestBody  Map map){//第一种方式/*  Set<Map.Entry<String, Object>> set=map.entrySet();;Iterator<Map.Entry<String, Object>> it=set.iterator();while(it.hasNext()){Map.Entry<String, Object> entry=it.next();System.out.println(entry.getKey()+"=="+entry.getValue());}*///第二种方式遍历/* Set<String> s1=map.keySet();for (String key : s1) {Object value = map.get(key);System.out.println(key+"==="+value);}*/// 第三种方式遍历 lamubda表达式map.forEach((key,value)->{if(key !=null){System.out.println(key+"==="+value);}});return map;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s发生故障,可以从哪些方面排查

目录 第一方面&#xff1a;审视集群状态 第二方面&#xff1a;追踪事件日志 第三方面&#xff1a;聚焦Pod状态 第四方面&#xff1a;检查网络连通性 第五方面&#xff1a;审视存储配置 第六方面&#xff1a;研究容器日志 第一方面&#xff1a;审视集群状态 K8S的集群状态…

Ubuntu18.04 系统安装 Docker

1、首先更新软件源&#xff1a; sudo apt-get updatesudo apt-get upgrade 2、安装Docker&#xff1a; sudo apt install docker -y 3、查看安装的Docker apt list docker 4、查看docker 进程 ps -ef|grep docker 5、查看docker 版本有问题 6、开启Docker服务 systemctl…

10_SPI_Flash 连续写实验

10_SPI_Flash 连续写实验 1. 实验目标2. 连续写方法3. 操作时序4. 流程框图4.1 顶层模块4.2 连续写模块 5. 波形图6. RTL6.1 flash_seq_wr_ctrl6.2 spi_flash_seq_wr 7. Testbench 1. 实验目标 使用页写指令&#xff0c;将串口发送过来的连续不定量数据写入 Flash。本实验中&a…

Web安全——数据库mysql学习

数据库mysql基础 Web安全分享一、数据库的基本操作1、MYSQL登录与退出2、MYSQL数据库的一些解释3、MYSQL注释符有三种&#xff1a; 二、数据库的一些基本操作1、数据库的增删改查(sql语句) 三、table 表的操作1、查看表结构2、查看表的内容3、建立表4、约束条件5、修改表的操作…

网络通信原理系统的认知(NEBASE第十四课)

1 物理层 第一层 物理层&#xff1a;建立、维护、断开物理连接&#xff0c;定义了接口及介质&#xff0c;实现了比特流的传输。 1.1传输层介质分类 有线介质&#xff1a;网线 &#xff08;双绞线&#xff09;光纤 无线: 无线电 1.2 双绞线 五类线 cat5 &#xff1a;适用 10…

“深入解析Redis的数据结构与应用场景“

标题&#xff1a;深入解析Redis的数据结构与应用场景 摘要&#xff1a;本文将深入解析Redis的数据结构与应用场景&#xff0c;包括字符串、列表、哈希表、集合和有序集合。通过详细介绍每种数据结构的特点和常见使用场景&#xff0c;帮助开发工程师更好地理解和应用Redis。 正…

Docker的使用

1. Docker的含义 1. 镜像&#xff1a;别人开发好的基础&#xff0c;类似C中的类 2. 容器&#xff1a;自己创建的实例 2.如何使用docker 可以从网上拉取相应的镜像&#xff0c;然后宿主机以下命令&#xff1a;创建Dockerfile文件docker build -t image_name:tag . 创建自己的do…

RxJava 2.0 全体系梳理(持续更新ing)

事件流 数据流 如何组合和变换流 如何订阅任何可观察的数据流 目录 一.源码解析 二.基本使用 步骤 一、创建Observable 二、创建Observer 三、使用subscribe进行订阅 四、取消订阅 Disposable 五种Observable(被观察者) Observable 和 Observer Cold Observable …

第二次CCF计算机软件能力认证

第一题&#xff1a;相邻数对 给定 n 个不同的整数&#xff0c;问这些数中有多少对整数&#xff0c;它们的值正好相差 1。 输出格式 输入的第一行包含一个整数 n&#xff0c;表示给定整数的个数。 第二行包含所给定的 n 个整数。 输出格式 输出一个整数&#xff0c;表示值正好相…

KMP算法

KMP KMP 算法是一个快速查找匹配串的算法&#xff0c;它的作用其实就是本题问题&#xff1a;如何快速在「原字符串」中找到「匹配字符串」。 而 KMP 算法的复杂度为 O(mn)实际上是O(N),因为O(M)不可能大于O(N) KMP 之所以能够在 O(mn)复杂度内完成查找&#xff0c;是因为其能…

uniapp:tabBar配置后不显示的问题

问题描述 uniapp的tabBar配置后不显示 问题解决 tabBar.list 数组的第一项必须和pages配置中的第一项要相同 参考文章 uniapp tabBar配置后不显示&#xff0c;无效的问题

巴斯夫与长三角物理研究中心开展合作,专注固态和钠离子电池领域

“巴斯夫&#xff0c;全球知名化学公司&#xff0c;宣布与长三角物理研究中心合作&#xff0c;在江苏溧阳市成立联合研究中心&#xff0c;专注于固态电池和钠离子电池的科研。” 根据巴斯夫官方微博消息&#xff0c;新成立的研究中心名为“巴斯夫–长三角物理研究中心新能源汽车…

高德地图的使用

JS API 结合 Vue 使用 高德地图 jsapi 下载、引入 npm add amap/amap-jsapi-loaderimport AMapLoader from amap/amap-jsapi-loader 使用2.0版本的loader需要在window对象下先配置 securityJsCode JS API 安全密钥使用 JS API 使用 script 标签同步加载增加代理服务器设置…

【计算机网络】网络编程套接字(二)

文章目录 网络编程套接字&#xff08;二&#xff09;简单TCP服务器实现创建套接字服务器绑定服务器监听服务器接收连接服务器处理请求 简单TCP客户端实现创建套接字客户端发起连接客户端发起请求 服务器简单测试服务器简单测评多进程版TCP服务器捕捉SIGCHLD信号孙子进程提供服务…

【RuoYi-Cloud-Plus】学习笔记 09 - Sentinel(四)熔断降级知识整理

文章目录 前言参考目录版本说明学习笔记1、包结构2、DegradeSlot3、DegradeRule4、DegradeRuleManager5、CircuitBreaker5.1 CircuitBreaker.State6、AbstractCircuitBreaker6.1、AbstractCircuitBreaker#fromCloseToOpen6.2、AbstractCircuitBreaker#fromHalfOpenToOpen6.3、A…

【Android知识笔记】系统进程(二)

AMS ActivityManagerService(以下简称AMS) 主要负责四大组件的启动、切换、调度以及应用进程的管理和调度工作。所有的APP应用都需要与AMS打交道,ActivityManager的组成主要分为以下几个部分: 服务代理:由ActivityManagerProxy实现,用于与Server端提供的系统服务进行进程…

支付宝接入

支付宝接入 python-alipay-sdk pycryptodome一、电脑网站支付 1.1 获取支付宝密钥 沙箱网址 1.APPID 2.应用私钥 3.支付宝公钥1.2 存放密钥 在与 settings.py 的同级目录下创建 pem 文件夹pem 文件夹下创建 app_private_key.pem 和 alipay_public_key.pem app_private_key…

神经网络初谈

文章目录 简介神经网络的发展历程神经网络的初生神经网络的第一次折戟神经网络的新生&#xff0c;Hinton携BP算法登上历史舞台命途多舛&#xff0c;神经网络的第二次寒冬神经网络的重生&#xff0c;黄袍加身&#xff0c;一步封神神经网络的未来&#xff0c;众说纷纭其他时间点 …

STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063

STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063 Proteus仿真小实验&#xff1a; STM32 Proteus仿真LCD12864俄罗斯方块-FZ0063 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD12864显示器多个按键 1.标准俄罗斯方块经典游戏玩法&#xff0c;带计时&#xff0c…

Kong 服务和路由的添加

管理服务 这里参考DB-less-Mode&#xff0c;因为使用的是yaml配置文件的形式&#xff0c;所以所有的相关配置只需要往初始化的kong.yml文件中添加就可以了&#xff0c;就像nginx的配置文件 DB-less-Mode 创建服务 vim /etc/kong/kong.yml services: - name: my-service #…