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

news/2024/11/29 13:30:02/

实现用户查询/添加功能

  • 1. 查询功能
    • 准备
    • selectAllServlet:
    • brand.html:
  • 2. 添加功能
    • addBrand.html:
      • 表单:
      • <script:
    • addServlet:

1. 查询功能

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

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

准备

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

目录
在这里插入图片描述

selectAllServlet:

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

brand.html:

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

在这里插入图片描述

<script
在这里插入图片描述
在这里插入图片描述

效果

访问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;
  • 服务端接收数据,添加到数据库;
  • 客户端收到响应后,判断响应是否为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. request.getParameter()的方式不能接收JSON格式的数据! 这个方法切割的是HTTP请求报文的字符串;而JSON 的格式不一样!
  2. JSON数据不管多长都是一行!

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

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


http://www.ppmy.cn/news/18951.html

相关文章

YOLOv5/v7 引入 YOLOv8 的 C2f 模块

YOLOv8 项目地址&#xff1a;https://github.com/ultralytics/ultralytics YOLOv8 Ultralytics YOLOv8 是由 Ultralytics 开发的一个前沿的 SOTA 模型。它在以前成功的 YOLO 版本基础上&#xff0c;引入了新的功能和改进&#xff0c;进一步提升了其性能和灵活性。YOLOv8 基于快…

Ae 效果详解:发光

效果/风格化/发光Effects/Stylize/Glow发光 Glow效果可找到图像中的较亮部分&#xff0c;然后使那些像素和周围的像素变亮&#xff0c;以创建漫射的发光光环。可以创建两种颜色&#xff08;颜色 A 和颜色 B &#xff09;之间的渐变发光&#xff0c;并可通过复制发光效果以创建更…

ESP32设备驱动-LX1972可见光传感器驱动

LX1972可见光传感器驱动 1、LX1972介绍 LX1972 是一款低成本硅光传感器,其光谱响应非常接近人眼。专利电路在 520nm 处产生峰值光谱响应,IR 响应小于峰值响应的 5%,高于 900nm。 光电传感器是一个 PIN 二极管阵列,具有线性、准确和非常可重复的电流传递函数。 芯片上的…

【每日一题Day96】LC2303计算应缴税款总额 | 模拟

计算应缴税款总额【LC2303】 You are given a 0-indexed 2D integer array brackets where brackets[i] [upperi, percenti] means that the ith tax bracket has an upper bound of upperi and is taxed at a rate of percenti. The brackets are sorted by upper bound (i.e…

Allegro如何统计包含过孔长度的网络长度操作指导

Allegro如何统计包含过孔长度的网络长度操作指导 当需要统计网络长度的时候,可以通过element选择nets看到网络的长度,但是当网络换层了,并且需要统计到过孔的长度,类似下图 Allegro可以快速的统计网络的长度,并且包含过孔的长度 具体操作如下 选择Setup选择Constraint –…

UDS诊断系列介绍15-FIM模块功能介绍

本文框架1. 系列介绍1.1 FIM模块概述2. FIM相关概念2.1 FID概念2.2 FIM数据结构3. FIM模块作用过程4. Autosar系列文章快速链接1. 系列介绍 UDS&#xff08;Unified Diagnostic Services&#xff09;协议&#xff0c;即统一的诊断服务&#xff0c;是面向整车所有ECU的一种诊断…

基于ssm校园学生协会管理系统jsp校园社团管理系统源码和论文

1、开发环境 &#xff08;1&#xff09;操作系统: Windows10 &#xff08;2&#xff09;数据库与数据库管理工具: MySQL 5.7.19、Navicat for MySQL &#xff08;3&#xff09;Web服务器: Tomcat8.5.38 &#xff08;4&#xff09;开发工具与技术: Eclipse IDEA、SSM框架、Ajax …

【HBase入门】2. 集群搭建

安装 上传解压HBase安装包 tar -xvzf hbase-2.1.0.tar.gz -C ../server/ 修改HBase配置文件 hbase-env.sh cd /export/server/hbase-2.1.0/conf vim hbase-env.sh # 第28行 export JAVA_HOME/export/server/jdk1.8.0_241/ export HBASE_MANAGES_ZKfalsehbase-site.xml vim…