使用 AJAX+JSON 实现用户查询/添加功能

2023-11-11

1. 查询功能

需求:在onload(页面加载完成)事件触发后,完成品牌列表查询;
在这里插入图片描述

  • 在brand.html页面【加载完成之后】,通过AJAX发送请求给Servlet;
  • Servlet将List数据转换为JSON写回response,返回浏览器;
  • 客户端收到响应,执行回调函数,在页面遍历数组并展示数据;

准备

引入fastjson,用于JSON的序列化和反序列化操作;
在这里插入图片描述

目录
在这里插入图片描述

selectAllServlet:

  • 注意数据中含有中文,在响应字节数据之前使用setContentType(),注意参数由 text/html变为 text/json
  • 调用JSON.toJSONString 将查询结果List 序列化 为JSON(本质是字符串);
  • 然后将序列化后的JSON字符串写入response传回;

(brandService是写的MyBastis那一套,并返回查询结果)

在这里插入图片描述

brand.html:

  • 首先发送请求是要在onload 页面加载完之后才发,所以整个逻辑在window.onload 绑定的的函数内;
  • 页面完成之后,准备发送AJAX请求给Servlet,SQL的请求方式为GET,DML为POST:
  • 设置回调函数resp.data 就是selectAllServlet返回的JSON数组;
  • 遍历数组,将数据放到 表格中:
    1.先创建一个字符串tablestr,放入表头;
    2.将JSON数组的属性放入tableData拼接出表格的格式:
    3.最后将tableData设置为表格的innerHTML属性数据;

在这里插入图片描述

<script
整个逻辑在onload事件绑定的函数内;
在这里插入图片描述
JSON可以像对象一样用 json . name 获取使用其属性;
在这里插入图片描述

效果

访问localhost:8080/brand-demo/brand.html ,直接显示查询的列表结果:
在这里插入图片描述

2. 添加功能

需求:客户端点击button后,服务端将浏览器输入参数添加到数据库(需要使用JSON的反序列化)

在这里插入图片描述

  • 浏览器点击button通过AJAX 将JSON数据提交到servlet;(注意这里不是submit!)
  • 服务端收到从requst获取的数据,添加到数据库,添加完后发出响应;
  • 浏览器获取响应,如果添加成功则跳转到brand.html(然后在进行查询列表操作);

addBrand.html:

注意
1. 请求是JSON格式,由AJAX发给Servlet,所以表单的action 不写Servlet访问路径;
2. 这里是 button 不是 submit !
submit是同步的请求, 而button没有提交表单的功能,数据提交由AJAX来实现,而且是异步请求;
传递的是JSON格式!
3.DML一般使用POST的方式请求;

表单:

在这里插入图片描述

<script:

  • 用户点击按钮触发button绑定的函数,客户端会将数据以JSON方式(封装到js对象)发送到servlet;
  • 服务端接收并反序列化数据为User对象,添加到数据库;
  • 客户端收到响应后,判断响应是否为suecess,是则表示添加成功,则页面跳转到brand.html(通过设置 location.href进行跳转) ;

注意

  1. 表单数据如何通过AJAX发送到servlet ? ------表单数据要转为JSON !
  2. 先建立一个fomatData的js对象,写入brand对象的格式;
  3. 通过id获取Element对象,以此从表单获取数据,

载入axios;
在这里插入图片描述
整个逻辑在onclick单击事件出绑定的函数中;

在这里插入图片描述
此处省略剩下的表单数据…
将用户输入的表单数据全都封装在js对象中;
特殊:status有两个值,单选框radio类型的cheked属性为true即为选中,然后把status赋值给js对象;

再将js对象 formatData作为Data传给servlet:
在这里插入图片描述

addServlet:

  • 在servlet获取HTTP请求报文的请求体,再调用JOSN.parseObject()反序列化为Java对象!
  • 将对象放入response传给客户端;

注意

  1. 由于AJAX使用了POST的方式请求,数据在请求体中,使用request.getReader() 读取;
  2. request.getParameter()的方式不能接收JSON格式的数据! 这个方法切割的是HTTP请求报文的字符串;而JSON 的格式不一样!
  3. JSON数据不管多长都是一行!

在这里插入图片描述
添加成功就响应 “success”;

效果
访问addBrand.html:
添加数据并提交,服务端会添加数据到数据库,然后返回success给客户端;
在这里插入图片描述
跳转到brand.html 并显示查询列表;
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AJAX+JSON 实现用户查询/添加功能 的相关文章

  • 未调用 Ajax 回调。如何解决这个问题?

    我再次来这里寻求您的建议 我有一些 AJAX 调用 用于从我的编辑器 PHP 在线编辑器 运行代码 大家可以来看看my site http web guru99 com 我有一些 ajax 调用来发送编辑器的数据并接收输出 问题 for 循
  • 使用 ruamel.yaml,如何使带有 NEWLINE 的变量成为不带引号的多行

    我正在生成用作协议的 YAML 其中包含一些生成的 JSON import json from ruamel import yaml jsonsample id 123 type customer account other myyamel
  • JSON Patch RFC 中的波浪号转义应该如何操作?

    参考文献https www rfc editor org rfc rfc6902 appendix A 14 https www rfc editor org rfc rfc6902 appendix A 14 A 14 逃脱命令 目标 J
  • 在自定义对象中映射 JSON 对象

    我一直在搜索是否可以获取 JSON 字典或数组并将其直接映射到属性与 JSON 标签同名的自定义对象中 但我没有找到任何相关信息 我一直在手动解析 JSON 字典 如下所示 id deserializedObj nil id jsonObj
  • JSON.stringify 对于大型对象来说非常慢

    我在 javascript 中有一个非常大的对象 大约 10MB 当我对其进行字符串化时 需要很长时间 因此我将其发送到后端并将其解析为一个对象 实际上是带有数组的嵌套对象 这也需要很长时间 但这不是我们在这个问题中的问题 问题 我怎样才能
  • 如何让浏览器后退按钮通过 AJAX 调用带您返回?

    我有一个页面 上面有很多动态生成的复选框 当用户单击这些复选框时 页面上的许多内容会通过 ajax 动态更改 最终用户抱怨 在点击提交然后点击后退按钮更改某些内容后 他们的选择被破坏了 他们必须重新做一遍 我见过一些网站 gmail fac
  • 使用 mongoimport 从 Windows 文件夹批量导入 MongoDB

    我的存档中有很多 json 文件 我需要将它们导入到 mongo 每一个操作中 我认为它可能是循环的 你对此有什么想法吗 如果您使用的是 Linux Unix shell 您可以尝试 for filename in do mongoimpo
  • 如何阅读网站内容?

    我是使用 python 2 7 的网络爬虫的新手 一 背景 现在 我想收集有用的数据AQICN org http aqicn org city shenyang usconsulate 这是一个很棒的网站 提供世界各地的空气质量数据 我想用
  • Twitter api 文本字段值被截断

    为什么文本字段值被截断以及如何获得完整的值 截至目前 我正在尝试获取如下所示的文本字段值 do if let responseObject try NSJSONSerialization JSONObjectWithData respons
  • json 具有自动完成功能?

    我在用Jquery 自动完成 http docs jquery com Plugins Autocomplete autocomplete url or dataoptions 我也在使用 formatItem 我希望输出是
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 双向链表转 JSON

    我有一个三维结构 实际上是一个具有六个节点的双向链表 即左 右 上 下 进 出 如果一个节点位于另一个节点的右侧 那么该节点将毫无疑问位于第一个节点的左侧 喜欢 实际上这是一个 3D 结构 但为了便于理解 我给出了一个 2D 示例 现在我必
  • 如何在 Django REST Framework 中序列化“对象列表”

    我需要一个序列化器来完成这样的事情 items 12 name item 1 66 name item 2 我应该如何声明我的序列化器才能得到这样的东西 这是否是一个有效的 JSON 还是应该如下所示 items name item 1 i
  • dart中解析对象(不支持的操作:无法添加到固定长度列表)

    我有一个用户对象 当用户登录 注册时 该对象保存到云 Firestore 数据库中 因此 当用户登录时 将从数据库中检索用户对象 并且一切正常 直到我尝试对列表 usersProject 执行 添加 操作 Add the new proje
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 在javascript中解析json - 长数字被四舍五入

    我需要解析一个包含长数字的 json 在 java servlet 中生成 问题是长数字被四舍五入 当执行这段代码时 var s x 6855337641038665531 var obj JSON parse s alert obj x
  • ajax4jsf死了吗?还有哪些其他适用于 JSF 的 AJAX 库?

    我目前正在使用JBoss RichFaces http www jboss org jbossrichfaces 我正在从事的项目的 JSF 组件库 一般来说 它工作得很好 特别是 ajax4jsf A4J 提供的 AJAX 支持 但我发现
  • 长轮询会冻结浏览器并阻止其他 ajax 请求

    我正在尝试在我的中实现长轮询Spring MVC Web 应用程序 http static springsource org spring docs 2 0 x reference mvc html但在 4 5 个连续 AJAX 请求后它会
  • 在 Android 应用程序资源中使用 JSON 文件

    假设我的应用程序的原始资源文件夹中有一个包含 JSON 内容的文件 我如何将其读入应用程序 以便我可以解析 JSON See 开放原始资源 http developer android com reference android conte

随机推荐

  • 第十二届蓝桥杯嵌入式总结及分享

    蓝桥杯嵌入式总结以及分享 这是我第一次写CSDN的文章 如果有什么写的不好的 还请各位见谅 不喜勿喷 谢谢 经过这两个星期时间准备省赛 两个星期准备国赛 最终取得了国二的成绩 个人认为这个比赛就是耗时长 我对源码不够熟悉 所以导致时间基本都
  • 走得最慢的人,只要他不丧失目标,也比漫无目的地徘徊的人走得快。

    走得最慢的人 只要他不丧失目标 也比漫无目的地徘徊的人走得快 莱辛 有着坚定明确的目标 且知道如何做能达成目标 没有追求 未来迷茫 或许大家都想当第一种人 但可能在不知不觉中就成了第二种人 自己也不知道 或是因为目标太大 难以后继 最终失却
  • 1049 数列的片段和

    给定一个正数数列 我们可以从中截取任意的连续的几个数 称为片段 例如 给定数列 0 1 0 2 0 3 0 4 我们有 0 1 0 1 0 2 0 1 0 2 0 3 0 1 0 2 0 3 0 4 0 2 0 2 0 3 0 2 0 3
  • Xshell缺少.dll文件解决方案

    背景 安装Xshell时报错 由于找不到MSVCR110 dll文件 无法继续执行代码 重新安装程序可能会解决此问题 这种情况是缺少运行库 解决方案 微软常用运行库 https pan baidu com s 1kgJRky3cicOMxR
  • 计算机打不开excel表格,excel表格打不开怎么办?excel表格打不开的原因及解决方法...

    今天有网友反映 他昨天做的Excel表格打不开了 但其他Excel表格是可以打开的 非常郁闷 那么Excel表格打不开是什么原因呢 Excel表格打不开怎么办呢 下面脚本之家小编就来说说有关造成Excel表格打不开的几种原因及解决办法 一
  • 基于Loung Attention+LSTM的机器翻译模型

    目录 需要掌握的基础知识 1 Encoder Decoder架构 2 LSTM模型原理 3 Attention机制 基于Loung Attention LSTM的机器翻译模型 模型 数据 训练 基于Bahdanau Attention LS
  • 大数据安全治理平台建设方案

    近年来 随着大数据应用的普及 在新基建 智慧城市 云端应用等大背景趋势下 给我们日常生活便来了很多方便 同时也派生出更多网络安全风险 如企业数据泄露 欺诈 数据违规使用 个人隐私泄露以及企业内部各种威胁和潜在风险 数据是宝贵的资源和财富 当
  • LCD操作原理

    一 LCD原理介绍 LCD内部内部结构 1 lcd由Framebuffer lcd屏幕 信号线 电子枪 lcd控制器组成 2 Framebuffer提供显示数据 lcd屏幕显示 信号线传输Frambuffer中的数据和lcd控制器发出的信号
  • 【深度学习】Attention提速9倍!FlashAttention燃爆显存,Transformer上下文长度史诗级提升...

    转载自 新智元 继超快且省内存的注意力算法FlashAttention爆火后 升级版的2代来了 FlashAttention 2是一种从头编写的算法 可以加快注意力并减少其内存占用 且没有任何近似值 比起第一代 FlashAttention
  • Sqli-labs Less-1 报错注入

    Sqli labs Less 1 报错注入 1 首先打开less1后是一个页面 提示输入id作为参数 输入id 1试一下 然后会出现 name 和 password 添加一个单引号 测试一下注入点 输入单引号发现 会直接将报错结果显示在页面
  • 模拟IC设计——MOS计算及常见MOS管电路

    小生初入模拟IC 作此笔记在大佬面前实属班门弄斧 若有不当之处还请指正 1 MOSFET概述 场效应管与晶体管一样 也具有放大作用 但与普通晶体管是电流控制型器件相反 场效应管是电压控制型器件 它具有输入阻抗高 噪声低的特点 1 MOSFE
  • 使用OpenCV中的matchTemplate函数实现模板匹配【C++版】

    matchTemplate函数原型 void cv matchTemplate InputArray image InputArray templ OutputArray result int method InputArray mask
  • THREEJS - 动态标签(dom方式)

    在三维场景中 我们会有一种需求 需要给三维场景中的模型打上标签 例如展示模型的名称 性能展示等 三维场景打标签的方式很多 有dom sprite Mesh等等 这篇文章来给大家介绍的是一种比较常见的打标签方式 dom 这种方式我们可以自定义
  • WSL2和本地windows端口互通

    众所周知 WSL 默认安装后 只允许windows访问 Windows Subsystem for Linux 而WSL是不能反之访问本地windows 我之前用vmware的思路认为是nat的网络模式 于是改成了桥接 结果wsl的桥接模式
  • springboot日志配输出路径配置_SpringBoot输出日志到文件

    1 基本信息 SpringBoot版本2 2 5 日志框架SLF4J 日志框架的实现LockBack 2 输出文件的配置 2 1 logging file name 指定日志文件的位置 2 1 1 例1 使用相对路径 就会在项目根目录下生成
  • R 语言散点图矩阵

    多个变量之间的关系经常用散点图矩阵表示 ggplot2 包没有提供专门的散点图矩阵 基础 R 图形中提供了 pairs 函数作散点图矩阵 GGally 包提供了一个 ggscatmat 函数作散点图矩阵 例如 对 iris 数据的四个测量值
  • UE4 C++ FString乱码显示问号

    如果以 xxx 这种形式并且xxx为中文时 直接赋值给FString的变量会丢失数据导致系统无法识别 因此需要做特殊处理 第一种解决办法 引号前加L表示将字符串转为unicode的字符串 也就是每个字符占用两个字节 FString str
  • 【无标题】DEFI+NFT新玩法

    DeFi NFT 去中心金融 非同质化货币 NFT Defi就是将流动性挖矿的方法移植到到NFT领域 目前典型的代表有MEME SAND RARI等 区块链行业一直困于 圈内自嗨 无法真正走入大众市场 市场和用户规模的增量相比互联网行业是杯
  • 学习笔记-二叉排序树

    二叉排序树 对于二叉排序树的任何一个非叶子节点 要求左子节点的值比当前节点的值小 右子节点的值比当前节点的值大 如果有相同的值 可以将该节点放在左子节点或右子节点 二叉排序树的创建和遍历 思路 比较节点的值 小于就放在左子节点 大于就放在右
  • 使用 AJAX+JSON 实现用户查询/添加功能

    实现用户查询 添加功能 1 查询功能 准备 selectAllServlet brand html 2 添加功能 addBrand html 表单