Day17_2--JSON学习之序列化非字符串数据传给前端页面

JSON 数据处理——数据交换的标准 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。"category": "手机","specs": {"screen": "6.1英寸","""自定义日期时间编码器"""# 使用data = {'name': '订单',"""自定义日期时间解码器"""try:pass# 使用json_str = '{"name": "订单", "created_at": "2024-03-19T12:00:00"}' 阅读详情

使用Java Servlet和JSON进行前后端数据交互

在现代Web应用开发中,前后端数据交互是一个至关重要的环节。本文将演示如何使用Java Servlet将非字符串数据序列化为JSON格式,并通过AJAX将其传递给前端页面。我们将通过一个简单的例子来实现这个过程,包括后端Java代码和前端HTML/JavaScript代码。

后端代码:Java Servlet

首先,我们需要创建一个Java Servlet来处理JSON数据的生成和传递。以下是一个简单的Servlet实现,它将一个Student对象的列表序列化为JSON字符串,并将其发送到前端页面。

Java Servlet代码

@WebServlet("/json")
public class JsonServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 创建一个学生对象列表
        ArrayList<Student> students = new ArrayList<>();
        Student student1 = new Student(12, "小龙", "男", 18, "IT");
        students.add(student1);

        // 设置响应数据的编码
        resp.setCharacterEncoding("UTF-8");

        // 导入阿里巴巴的JSON转换工具,将学生列表序列化为JSON字符串
        String jsonResponse = JSON.toJSONString(students);

        // 设置数据类型为JSON
        resp.setContentType("application/json");

        // 获取响应的输出流,并写入JSON数据
        PrintWriter writer = resp.getWriter();
        writer.write(jsonResponse);
        // 确保数据被写入并释放资源
        writer.flush();
        writer.close();
    }
}

前端代码:HTML和JavaScript

前端页面将通过AJAX请求从Servlet获取JSON数据,并将其展示在网页上。以下是前端HTML和JavaScript代码的实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学生信息展示</title>
</head>
<body>
    <div id="show" style="border: 1px red; width: 200px; height: 100px"></div>
    学号: <span class="sno"></span><br>
    姓名: <span class="name"></span><br>
    <button onclick="fetchStudentData()">获取</button>

    <script>
        function fetchStudentData() {
            // 1: 创建XMLHttpRequest对象
            let xhr = new XMLHttpRequest();

            // 2: 配置后端请求
            xhr.open("GET", "/stage1_war_exploded/json", true);

            // 3: 发送请求
            xhr.send();

            // 4: 监听数据是否请求成功
            xhr.onreadystatechange = function () {
                // 5: 如果服务器成功解析数据则readyState=4, 如果后端成功返回数据则status=200
                if (xhr.readyState == 4 && xhr.status == 200) {
                    // 6: 获取后端数据并反序列化为JSON对象
                    let data = JSON.parse(xhr.responseText);

                    // 7: 将数据插入前端页面
                    document.querySelector(".sno").innerHTML = data[0].sno;
                    document.querySelector(".name").innerHTML = data[0].name;
                }
            };
        }
    </script>
</body>
</html>

在这个HTML页面中,我们创建了一个按钮和两个用于显示学生学号和姓名的<span>元素。点击按钮时,会调用fetchStudentData函数,该函数通过AJAX向Servlet发送请求,并将返回的JSON数据插入到页面中。

NoUnityCN:绕过地域限制,从Unity官方CDN直链下载全版本编辑器 在软件开发和游戏制作领域,内容分发网络(CDN)是保障全球用户高速、稳定获取大型文件的核心基础设施。其原理是通过将资源缓存至遍布各地的边缘节点,使用户能从地理距离最近的服务器获取数据,从而显著提升下载速度并降低源站压力。这一技术对于需要频繁下载大型开发工具(如游戏引擎)的团队而言,价值在于能确保开发环境部署的一致性与效率,是构建自动化CI/CD流水线和团队协作的基础。然而,当开发者因网络策略或地域限制无法直接访问官方CDN时,获取安装文件便成为阻碍工作流的痛点。NoUnityCN项目正是针对此场景的工程实践 阅读详情

相关推荐

①Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网

MS-A1-50X1系列作为MODBUS TCP通信的服务器进行动作。可通过MODBUS TCP 通信,将 MS-A1-50X1 系列产品通过 RS485 采集的仪器仪表之类的值作为通信数 据输出到 PLC,上位机等。

2401_89571741的博客 1397

python学习-处理csv和json数据-day17

CSV:Comma-Separated Values,意为逗号分隔的值,CSV是简化的电子表格,保存为。JSON:JavaScript Object Notation,它是一种格式,以JavaScript源代码的形式,将信息保存在中。

weixin_45014518的博客 957

NVIDIA NCCL 安装和测试实战教程

ibrary)是用于深度学习应用的高性能通信库,可加速多GPU通信和同步。它能够在多个GPU之间进行高效的数据传输和集体操作,显著提高了分布式GPU系统上深度学习训练和推理的性能。NVIDIA NCCL是加速多GPU系统上深度学习应用的必不可少的工具。其高效的通信原语和集体操作显著提高了分布式训练和推理的性能,使其成为现代深度学习基础架构的关键组成部分。

weixin_39818775的博客 4427

Day10【json字符串】***

json字符串介绍 (1)什么是json字符串 JSON( JavaScript Object Notation, JS 对象标记) 是一种轻量级的、与语言无关的数据交换格式。 (2)有什么特点? 》1 完全独立于编程语言的文本格式来存储和表示数据。 》2 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 》3 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 (3)作用: 使用ajax进行前后台数据交换 移动端与服务端的数据交换 json格式语法 注意:json的key是

qq_43639081的博客 280

S-function入门及案例详解(3)——S-function进阶案例

目录1.案例描述2.案例详解3.输出波形4.对输入参数进行Mask打包 1.案例描述 设计一个蹦极系统 h为离地面高度,输入参数为长度、质量、离地面高度。 2.案例详解 步骤1.可以修改sfuntmpl函数的名称(这里修改为bengji),并在括号内增加输入参数 参数len,weight,dist分别表示长度、质量、离地面高度;长度用来初始化x0,质量用来初始化m,离地面高度用来初始化h。 function [sys,x0,str,ts,simStateCompliance] = bengji(t,x,u

Wendy的博客 1万+

别再混淆了!深入浅出图解四元数姿态控制中的‘误差四元数’(附四种定义对比与仿真)

本文深入解析四元数姿态控制中的误差四元数定义差异,对比四种常见定义(如Q₀∘Q⁻¹与Q⁻¹∘Q₀)及其对PD控制性能的影响。通过刚体动力学仿真验证,揭示定义二(Q⁻¹∘Q₀)在无人机和航天器控制中的最优性能,提供工程实践建议与参数整定技巧,帮助开发者避免常见陷阱并提升控制效率。

weixin_42528191的博客 277

day17面向对象和json数据

day17面向对象和json数据 定义类就是用代码描述清楚这个类是拥有哪些相同功能和哪些相同属性的对象的集合,属性(变量)用来描述相同属性。 一、面向对象的属性 属性分为两种 1.类属性 1)怎么定义:直接定义在类中的变量就是类属性 2)怎么使用:通过’ 类. ’ 的方式使用 3)什么时候用:如果属性值不会因为对象不同而不一样的时候 2.对象属性 1)怎么定义:以“self . 属性名 = 值“的方式定义在_——init——方法中 2)怎么使用:通过’ 对象. ’ 的方式使用 3)什么时候用:如果属

yangmei9550的博客 206

从数据库到数据仓库:数据仓库导论

本文为数据仓库导论,旨在介绍数据仓库的基本理念和应用场景,帮助读者理解数据仓库的重要性及其在企业中的实际应用。

探索大数据世界 - 深入解析数据存储、分布式计算与人工智能 2784

python学习-day12-json,pickle

视频链接:https://www.bilibili.com/video/BV1SE411N7Hi?p=79 总结:https://guobaoyuan.gitee.io/new_book/Python/17-1%20%E5%BA%8F%E5%88%97%E5%8C%96.html 以下内容仅供个人学习使用,侵删 #!/usr/bin/env python # -*- coding:utf-8 -*- ''' 序列化:将一些特殊的数据(字典、列表)转换成字符串 反序列化:将字符串转换成一些特殊的数据

laywl的专栏 243

高通SDX35:SGMII接口PHY RTL8211FSI-CG驱动适配

高通SDX35 RTL8211F SGMII

不秃头的程序猿Gabriel的博客 785

OpenClaw使用ClawHub安装skill网络不稳定?Rate limit exceeded报错?试试这个国内高速镜像工具!

使用 ClawHub 安装 Skill 时遇到 🌐 网络不稳、❌ Rate limit 或命令不可用?使用这个镜像工具,轻松解决skill安装问题,⚡

XiaoqiangClub的博客 1260

秃顶之路-Day17

Day 17 1.json模块 所有的编程语言都能够识别的数据格式叫做json,是字符串 能够通过json序列化成与如下类型:int float bool str list tuple dict None import json # json 用法 # dumps 和 loads 是一对,可以序列化成字符串 dic= {"name":"八戒","age":81,"classroom":"python31","family":["老爸","老妈","老伴"]} # ensure_ascii=False 显示中

Two_Ministers的博客 216

荒岛逃生游戏

正负表示逃生方向(正表示向右逃生,负表示向左逃生),绝对值表示战斗力,越左边的数字表示里左边港口越近,逃生方向相同的人永远不会发生决斗。- 如果左逃生者的战斗力大于右逃生者,则左逃生者获胜,减少其战斗力,并将右逃生者出栈。- 处理完所有输入后,统计仍在右逃生者栈和左逃生者栈中的战斗力,即可得到成功逃生的人数。- 如果左逃生者的战斗力小于右逃生者,则右逃生者获胜,减少其战斗力,左逃生者出局。- 向左逃生:从右逃生者栈中取出元素,与当前逃生者进行决斗。- 继续进行决斗,直到没有右逃生者或左逃生者的战斗力用尽。

面试高手的博客 2101

用js解析经json序列化后的C#的DateTime类型数据

// val为经json直接序列化后的C#的DateTime类型的数据 function formatTime(val) {     var re = /-?\d+/;     var m = re.exec(val);     var d = new Date(parseInt(m[0])); // 按【2012-02-13 09:09:09】的格式返回日期     retu

u014297475的博客 619

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【爬虫学习笔记day17】2.5. JSON模块与JsonPath+数据提取之JSON与JsonPATH+JSON+import json+JsonPath(了解)+JsonPath与XPath语法对

文章目录2.5. JSON模块与JsonPath数据提取之JSON与JsonPATHJSONimport json1. json.loads()2. json.dumps()3. json.dump()4. json.load()JsonPath(了解)JsonPath与XPath语法对比:示例: 2.5. JSON模块与JsonPath 数据提取之JSON与JsonPATH JSON(Java...

汪雯琦的博客 601

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

DAY17

DAY17 time模块 时间戳 时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。 格式化时间 格式化的时间字符串(format string):格式化时间表示的是普通的字符串格式的时间。 结构化时间 结构化时间(struct time):struct_time元组共有9个元素,分别为(年,月,日,时,分,秒。一年中第几周,一年中第几...

weixin_38170695的博客 169

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java报错不能反序列化_解决Jackson2反序列化LocalDateTime报错

今天在整合redis和spring boot的时候,遇到了一个错误,记录一下。报错如下:could not read json: cannot construct instance of `java.time.localdatetime` (no creators, like default construct, exist): cannot deserialize from object val...

weixin_42469191的博客 1624

解决Jackson2反序列化LocalDateTime报错

今天在整合redis和spring boot的时候,遇到了一个错误,记录一下。 报错如下: Could not read JSON: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default construct, exist): cannot deserialize from Object...

weixin_30609287的博客 948

Jackson 漏配 JavaTimeModule,JDK8 测试绿、JDK17 生产把 LocalDateTime 序列化成数组:序列化选型的 4 个真实坑

我们订单服务升级 JDK17 那天,前端大面积的"下单时间"显示成 2026, 8, 24, 13, 5, 30 这种数组。本地 JDK8 测试全绿,CI 也是 JDK8,没人发现。原因是 Jackson 序列化 LocalDateTime 时,没注册 JavaTimeModule 的话,会退化成"把字段当 POJO 反射",而 LocalDateTime 的字段刚好是 year / month / day ... 一组数字,于是被拍成了数组。 问题:为什么测试环境没事、生产炸了 JSON 没有"日期"类

weixin_39042870的博客 226

Python—day17时间模块、系统模块、递推遍历、序列化

一、time'''时间戳(timestamp):time.time()延迟线程的运行:time.sleep(secs)(指定时间戳下的)当前时区时间:time.localtime([secs])(指定时间戳下的)格林威治时间:time.gmtime([secs])(指定时间元组下的)格式化时间:time.strftime(fmt[,tupletime])''''''%y 两位数的年份表示(00-9...

weixin_30408739的博客 129

Python入门学习 DAY17 常用模块

Python入门      DAY 17 今日内容: 时间模块,random模块,os模块,sys模块,shutil模块,json模块,pickle模块 1.时间模块 time 和datetime import time # 获取时间戳 返回浮点型 print(time.time()) # 获取当地时间 返回的是结构化时间 print(time.localtime()) # ...

sql121407的博客 204

day17学习整理-Python模块

目录 2019/08/16 学习整理 函数进阶(模块) time模块 时间戳 格式化时间 结构化时间 不同格式时间的转换 其他用法 datetime模块 os模块 ...

163

Day 4-5 序列化 json & pickle &shelve

序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 反序列化: 把字符转成内存里的数据类型. 用于序列化的两个模块.他们的使用方法完全一样. json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供...

weixin_30888707的博客 127

python-day22(序列化)

序列化 把对象打散成二进制字节 bytes 一. pickle 把一个对象转化成bytes写入到文件 (重点)   pickle.dumps() 把对象转化成bytes   pickle.loads() 把bytes转化成对象      pickle.dump() 把对象转化成bytes, 写入到文件   pickle.load() 把文件中的bytes读取, 转化成对象 ...

banaoxue9848的博客 117

Python序列化与反序列化-json与pickle

                       Python序列化与反序列化-json与pickle                                             作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.json的序列化方式与反序列化方式 1>.json序列化 1 #!/usr/bin/env python ...

weixin_34413357的博客 115

day17

## 复习 ```python'''1. 导入模块的加载顺序:内存 > 内置 > sys.path2. 导入模块的执行流程:遇到导模块 -> 直接就进入模块文件,从上执行执行导入 -> 在遇到导包,再进入执行3. 循环导入:1.形成了环状导入;2.使用名字时名字未产生 -> 延后导入4. 包及包的概念:一系列模块的集合体,__init__.py就是一个模块,只...

weixin_30319097的博客 87
上一篇: Day17_1--AJAX学习之GET/POST传参
下一篇: Day18_1--Vue基础学习入门
IT ·南栀
博客等级 码龄6年 415粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT ·南栀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值