Spring MVC数据绑定和响应——数据回写(二)JSON数据的回写

        项目中已经导入了Jackson依赖,可以先调用Jackson的JSON转换的相关方法,将对象或集合转换成JSON数据,然后通过HttpServletResponse将JSON数据写入到输出流中完成回写,具体步骤如下。

        1、修改文件DataController.java,在DataController类中新增showDataByJSON()方法,用于将对象转换成JSON数据并写入输出流中完成回写。

@RequestMapping("showDataByJSON")
public void showDataByJSON(HttpServletResponse response)  {try {	ObjectMapper om = new ObjectMapper();User user = new User();user.setUsername("heima");	user.setPassword("666");String ujson = om.writeValueAsString(user);response.getWriter().print(ujson);} catch (IOException e) {	 e.printStackTrace();	}}

        2、启动chapter12项目,在浏览器中访问地址http://localhost:8080/chapter12/showDataByJSON。访问地址后,执行了showDataByJSON()方法,方法执行后将User对象的数据转换成JSON格式的数据输出到请求页面中了。

一、@ResponseBody注解的使用范围

        @ResponseBody注解可以标注在方法和类上,当标注在类上时,表示该类中的所有方法均应用@ResponseBody注解。如果需要当前类中的所有方法均应用@ResponseBody注解,也可以使用@RestController注解。

二、@ResponseBody注解的2个使用要求

        使用@ResponseBody注解,项目至少需要符合2个要求,分别如下所示。

•    项目中有转换JSON相关的依赖。
•    可以配置转换JSON数据的消息类型转换器。

        针对上述两个要求,chapter12项目都已经满足,项目的pom.xml文件中引入了Jackson相关的依赖,可以用于转换JSON;Spring MVC的配置文件中配置的<mvc:annotation-driven />元素默认注册了Java数据转JSON数据的消息转换器。

        接下来通过一个案例演示使用@ResponseBody注解回写JSON格式的对象数据和集合数据,案例具体实现步骤如下。

1、修改文件DataController.java,在DataController类中新增getUser()方法,用于返回JSON类型的User信息;新增addProducts()方法用于返回JSON类型的Product列表信息。

@RequestMapping("showDataByJSON")public void showDataByJSON(HttpServletResponse response) {try {ObjectMapper om = new ObjectMapper();User user = new User();user.setUsername("heima");user.setPassword("666");String ujson = om.writeValueAsString(user);response.getWriter().print(ujson);} catch (IOException e) {e.printStackTrace();}}

        2、创建一个商品添加页面product_add.jsp,在product_add.jsp中创建一个表格,用于显示用户信息和添加商品信息。product_add.jsp的部分代码如下所示。

<script type="text/javascript">// 添加商品function addProducts() {var url="${pageContext.request.contextPath }/addProducts";$.get(url,function (products) {//将处理器返回的商品列表信息添加到表格中for (var i=0;i<products.length;i++) {
$("#products").append("<tr><td>"+products[i].proId+"</td><td>“+products[i].proName+”</td></tr>");	} })	}
</script>

        3、启动chapter12项目,在浏览器中访问商品添加页面product_add.jsp,访问地址为http://localhost:8080/chapter12/product_add.jsp。页面加载完,页面异步将用户的信息显示在单元格中,成功回写了User对象信息对应的JSON数据。

        4、单击product_add.jsp页面显示效果图所示的“添加多个商品”按钮。单击“添加多个商品”按钮,程序成功回写了List对应的JSON数据。

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

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

相关文章

verilog 参数用法

参数比较运算 localparam QPLL_FBDIV_IN (QPLL_FBDIV_TOP 16) ? 10b0000100000 : (QPLL_FBDIV_TOP 20) ? 10b0000110000 :(QPLL_FBDIV_TOP 32) ? 10b0001100000 :(QPLL_FBDIV_TOP 40) ? 10b0010000000 :(QPLL_FBDIV_TOP 64) ? 10b0011100000 :(QPLL_FBDIV_TO…

昇思25天学习打卡营第04天 | 数据集 Dataset

昇思25天学习打卡营第04天 | 数据集 Dataset 文章目录 昇思25天学习打卡营第04天 | 数据集 Dataset数据集加载数据集迭代数据集的变换shufflemapbatch 自定义数据集可随机访问数据集对象可迭代数据集生成器 总结打卡 数据集Dataset对原始数据进行封装、变换&#xff0c;为神经网…

Linux 静态库 和 动态库

在Linux系统上&#xff0c;库文件用于共享和重用代码。根据使用方式和链接方式的不同&#xff0c;库文件可以分为静态库和动态库。 静态库&#xff08;Static Library&#xff09; 静态库是在编译时被嵌入到最终可执行文件中的库。静态库的扩展名通常是.a。 特点 独立性&am…

ADOP带你了解:SFP 光模块:构建高速网络的关键技术

在数字化时代&#xff0c;企业运营的效率往往取决于数据传输的速度。因此&#xff0c;构建一个可靠的网络基础架构至关重要。本指南深入探讨了小型可插拔&#xff08;SFP&#xff09;光收发器的关键作用&#xff0c;这些设备确保了网络中数据的高效和安全流动。SFP光收发器的设…

【Rust入门教程】hello world程序

文章目录 前言Hello World程序运行总结 前言 对于学习任何一种新的编程语言&#xff0c;我们都会从编写一个简单的Hello World程序开始。这是一个传统&#xff0c;也是一个开始。在这篇文章中&#xff0c;我们将一起学习如何在Rust中编写你的第一个程序&#xff1a;Hello Worl…

【C语言内存函数】

目录 1.memcpy 使用 模拟实现 2.memmove 使用 模拟实现 3.memset 使用 4.memcmp 使用 1.memcpy 使用 void * memcpy ( void * destination, const void * source, size_t num );目的地址 源地址 字节数 destination&#xff1a;指向要复制内…

20240703 每日AI必读资讯

&#x1f916;爆火Character AI惨遭阉割 美国00后集体“失恋” - Character AI曾是00后最火爆的社交软件&#xff0c;但用户发现对话模型变得冷淡&#xff0c;失去趣味。 - 用户流失严重&#xff0c;面临成本高、竞争激烈的挑战&#xff0c;甚至遭到挖角。 - 尽管困难重重&a…

淘宝API接口开发系列:淘宝订单详情API接口与物流电子面单API接口概述

淘宝订单详情API接口与物流电子面单API接口概述 在电子商务领域&#xff0c;API&#xff08;应用程序接口&#xff09;扮演着至关重要的角色&#xff0c;它们使得不同的系统能够相互通信&#xff0c;实现数据的共享和交换。淘宝作为国内最大的电商平台之一&#xff0c;其提供的…

C# 多线程造成CPU占用率高

当线程多的时候就会造成CPU内存占用率过高 private void button1_Click(object sender, EventArgs e){Thread TH1, TH2, TH3, TH4, TH5;TH1 new Thread(Thread1){IsBackground true};TH2 new Thread(Thread2){IsBackground true};TH3 new Thread(Thread3){IsBackground t…

最小步数模型——AcWing 1107. 魔板

最小步数模型 定义 最小步数模型通常是指在某种约束条件下&#xff0c;寻找从初始状态到目标状态所需的最少操作或移动次数的问题。这类问题广泛存在于算法、图论、动态规划、组合优化等领域。具体来说&#xff0c;它涉及确定一个序列或路径&#xff0c;使得按照特定规则执行…

jenkins在使用pipeline时,为何没有方块形视图

项目场景&#xff1a; 安装完Jenkins时后&#xff0c;通过pipeline创建的项目任务。 问题描述 在立即构建后&#xff0c;没有显示每个阶段的视图。 原因分析&#xff1a; 原因是&#xff0c;刚安装的Jenkins&#xff0c;这个视图不是Jenkins自带的功能&#xff0c;而必须安装…

《5小时吃透小red书》读书笔记之打造爆款笔记原理

1.流量推送逻辑&#xff1a; 一篇笔记发布并审核后&#xff0c;平台根据内容提取关键词&#xff0c;开始小范围发布测试&#xff1b;初次先分发到1000个兴趣用户&#xff0c;根据这1000个用户等反馈决定是否给该笔记更多流量和推荐&#xff1b;考核标准是点击率、完播率、互动…

高校实训室:老年实训室的教学案例

本文以高校老年实训室为研究对象&#xff0c;通过详细分析具体的教学案例&#xff0c;探讨了老年实训室在提升学生专业素养和实践能力方面的重要作用。文中介绍了多个具有代表性的教学案例&#xff0c;包括健康评估、康复护理和心理关怀等方面&#xff0c;阐述了其教学目标、实…

EDA 虚拟机 Synopsys Sentaurus TCAD 2017.09 下载

下载地址&#xff08;制作不易&#xff0c;下载使用需付费&#xff0c;不能接受的请勿下载&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1327I58gvV1usWSqSrG7KXw?pwdo03i 提取码&#xff1a;o03i

Boss直聘,无良厂商,乱封号

耽误招工作&#xff0c;瞎吉儿封号 哥们单身 需要女生多的公司 问一下都不行&#xff0c;什么尿性 直接就给你封了 装什么呢 辣鸡boss 倒闭吧赶紧 我是狗子&#xff0c;希望你倒闭&#xff01;

枚举类示例

package net.cnki.editor.costcenter.pojo.enums;import lombok.Getter;import java.util.Arrays;/*** 费用枚举接口*/ public interface CosttypeEnumInterface {/*** 费用类型和费用信息-> 费用性质, 支付人 , 收取人, 费用信息状态*/Getterenum CosttypePayerAndReceiveE…

使用PHP实现Web爬虫

web爬虫是一种自动化工具&#xff0c;可以浏览互联网上的网页&#xff0c;收集信息并存储在一个数据库中。在今天的大数据时代&#xff0c;web爬虫越来越重要&#xff0c;因为它可以查找大量信息并进行数据分析。在本文中&#xff0c;我们将学习如何使用php编写web爬虫&#xf…

Radxa 学习摘录

文章目录 1、参考资料2、硬件知识CIF 和 ISP 3、shell4、交叉编译工具链5、问题6、DTS7、驱动 1、参考资料 技术论坛&#xff08;推荐&#xff09; 官方资料下载 wiki资料 u-boot 文档 u-boot 源码 内核文档 内核源码 原理图 radxa-repo radxa-build radxa-pkg radxa-doc…

寻找最适合你的交易风格

与Eagle Trader一起&#xff0c;您将拥有一位坚不可摧的合作伙伴&#xff0c;为您的交易之路增添坚实信心&#xff0c;并重塑交易体验的每一个细节。我们量身定制的交易环境&#xff0c;更能让您精准捕捉并驾驭符合您独特交易风格的卓越条件&#xff0c;让交易之旅更加自由畅快…

Python容器 之 字典--定义

1.字典的介绍 1, 字典 dict, 使用 {} 表示 2, 字典是由键(key)值(value)对组成的, key: value 3, 一个键值对是一组数据, 多个键值对之间使用 逗号隔开 4, 在一个字典中, 字典的键 是不能重复的&#xff0c;如果重复原数据会被覆盖 5, 字典中的键 主要使用 字符串类型, 可以是…