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

news2024/9/23 21:21:16

实现用户查询/添加功能

  • 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.coloradmin.cn/o/176612.html

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

相关文章

SSM项目实战【从 0 到 1】:个人博客

文章目录前言一、项目简介二、项目技术栈三、准备工作1、Spring Boot 项目创建2、mybatis 配置3、数据库创建四、基本框架搭建1、实体层&#xff08;model&#xff09;2、控制器层&#xff08;controller&#xff09;3、服务层&#xff08;service&#xff09;4、持久层&#x…

Liunx相关服务无法启动,带你一步一步找出问题和解决问题

liunx服务无法开启的原因有各种各样&#xff0c;首先我们需要找到我们究竟是为什么不能能够开启这个服务&#xff0c;这里我们先要去考虑到的一个非常重要的问题就是我们的防火墙有没有启动&#xff0c;防火墙有没有把我们的要开启相关服务的端口给封禁掉。这个是无论如何都要第…

学习记录668@项目管理之项目沟通管理和干系人管理

书上这部分的内容很无趣、很花里花哨、很杂乱&#xff0c;所以本文只摘取我认为比较有用和有意义的片段。 沟通方式 在发送方自认为已经掌握了足够的信息&#xff0c;有了自己的想法且不需要进一步听取多方意见时&#xff0c;往往选择控制力极强、参与程度最弱的“叙述方式”&a…

ES学习看这一篇文章就够了

第一章 ES简介 第1节 ES介绍 1 2 3 41、Elasticsearch是一个基于Lucene的搜索服务器 2、提供了一个分布式的全文搜索引擎,基于restful web接口 3、Elasticsearch是用Java语言开发的&#xff0c;基于Apache协议的开源项目&#xff0c;是目前最受欢迎的企业搜索引擎 4、Elastics…

机器学习(四):机器学习工作流程

文章目录 机器学习工作流程 一、什么是机器学习 二、机器学习工作流程 1、获取到的数据集介绍 2、数据基本处理 3、特征工程 4、机器学习 5、模型评估 机器学习工作流程 一、什么是机器学习 机器学习是从数据中自动分析获得模型&#xff0c;并利用模型对未知数据进行…

【程序环境和程序预处理】万字详文,忘记了,看这篇就对了

本章介绍一个test.c文件是如何生成一个test.exe文件。首先了解程序环境和程序预处理的大致流程&#xff0c;本章会分别介绍各个流程&#xff0c;但重点是翻译中的编译中的预编译阶段。 文章目录&#xff1a; 1.程序翻译环境和运行环境 1.1程序翻译中的的编译和链接 2.预编译…

Flowable进阶学习(四)任务分配与流程变量

文章目录一、任务分配1. 固定分配2. 表达式分配值表达式&#xff1a;Value expression方法表达式&#xff1a;Method expression3. 监听器分配二、流程变量1. 全局变量2. 局部变量案例&#xff1a;一、任务分配 1. 固定分配 在绘制流程图时或在流程文件中通过Assignee来指定的…

3.2 特征图尺寸计算与参数共享|池化层的作用|整体网络架构|VGG网络架构|残差网络Resnet|感受野的作用

文章目录特征图尺寸计算与参数共享池化层的作用整体网络架构VGG网络架构&#xff08;了解向&#xff0c;背景向&#xff09;残差网络Resnet&#xff08;了解向&#xff0c;背景向&#xff09;感受野的作用特征图尺寸计算与参数共享 给个例子&#xff1a; 如果输入的数据是32323…

GDB的常用命令

GDB是一个调试程序&#xff0c;可以用来调试C/C程序。这个C/C要产生符号表才能使用GDB调用。例如C&#xff1a; g -g source.cppGDB常用命令 首先要生成一个有调试符号的ELF文件&#xff08;exe curable and linkable format),简单点说就是一个带调试符号可执行文件。加-g参数…

client-go实战之八:更新资源时的冲突错误处理

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 系列文章链接 client-go实战之一&#xff1a;准备工作client-go实战之二:RESTClientclient-go实战之三&#xff1a;Clientsetclient-go实战之四&#xff1a;…

matlab控制理论学习

一、求传递函数表达式residue() 1、极点不同的情况 分子和分母的矩阵分别为&#xff1a; >> num[2 5 3 6]; >> den[1 6 11 6]; 使用下列命令&#xff0c;即可对分式进行展开&#xff0c;展开后有多项&#xff0c;每一项的分子一定是数字&#xff0c;而分母则是一个…

mysql底层解析——连接层,包括连接、解析、缓存、引擎、存储等

1、 前言 打算写一个系列的文章&#xff0c;主要是mysql底层解析。 很多时候&#xff0c;程序员对mysql处于频繁使用&#xff0c;但都一知半解的程度&#xff0c;除了会加个索引&#xff0c;貌似也没啥优化的技能了。事实上&#xff0c;mysql能有今日的成就&#xff0c;必然不…

Selenium4新特性-关联定位策略

Selenium 4 引入了关联元素定位策略(Relative Locators)。这种方式主要是应对一些不好定位的元素&#xff0c;但是其周边相关联的元素比较好定位。实现步骤是先定位周边较容易定位的元素&#xff0c;再根据关联元素定位策略定位到想定位的那个元素。如下以具体案例讲解用法。 以…

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的一种诊断…

English Learning - L1-13 主动脉修饰 (上) 2023.1.16 周一

English Learning - L1-13 主动脉修饰 &#xff08;上&#xff09; 2023.1.16 周一11 主动脉修饰11.1 定语两大核心when 引导的定语从句where 引导的定语从句为什么有时关系词前会有介词到底用 which 还是用 that ?1. 先行词是 all, much, little, few, the one 等不定代词&a…

Java---微服务---SpringCloud(1)

SpringCloud011.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.微服务技术对比1.5.SpringCloud1.6.总结2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程2.3.实现远程调用案例2.3.1.案例需求&#xff1a;2.3.2.注册…

如何使用Facebook Insights提升SEO策略

搜索流量是所有网站都必须考虑的重要因素&#xff0c;但如何才能吸引到更多的访问者呢&#xff1f;我们都知道 Google的 SEO算法&#xff0c;那 Google针对搜索流量的算法有哪些&#xff1f;Facebook Insights &#xff08;Facebook Search Engine Insight&#xff09;是一款搜…

基于python个性化推荐购物系统的设计与实现

源码获取&#xff1a;https://www.bilibili.com/video/BV1Ne4y1g7dC/ 一、开发工具及技术 Python3.6.8&#xff0c;Django3&#xff0c;mysql8&#xff0c;navicat数据库管理工具&#xff0c;html页面&#xff0c;javascript脚本&#xff0c;jquery脚本&#xff0c;bootstrap…

从零实现一个组件库(一)项目环境搭建

文章目录前言monorepo架构1.monorepo架构的优势2.使用pnpm搭建monorepo架构&#xff08;1&#xff09;全局安装pnpm&#xff08;2&#xff09;初始化项目&#xff08;3&#xff09;新建workspace.yaml文件4.不同包之间的相互引用TypeScript支持1.安装TypeScript2.初始化TypeScr…

6、工程和模块管理

文章目录6、工程和模块管理6.1 IDEA 项目结构6.2 Project和Modoule的概念6.3 创建模块6.4 删除模块6.5 导入别人的模块6.6 当导入的模块字符集问题&#xff0c;导致中文乱码6.7 同时打开两个IDEA项目工程1 新建一个IDEA项目2 两个IDEA项目工程效果3 打开两个IDEA项目【尚硅谷】…