AJAX~

概念:AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML

AJAX作用:

1.与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据

        使用了AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面了

2. 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如︰搜索联想、用户名是否可用校验,等等...

同步与异步:

 1,AJAX快速入门

1.1 编写AjaxServlet,并用response输出字符串

//1.响应数据
resp.getWriter().write("hello ajax~~~");

1.2 创建XMLHttpRequest 对象:用于和服务器交换数据

// 创建 XMLHttpRequest 对象
const xhttp = new XMLHttpRequest();// 定义回调函数
xhttp.onload = function() {
// 您可以在这里使用数据
}

1.3 向服务器发送请求

xhttp.open("GET", "url");//url为地址
xhttp.send();

1.4 获取服务器响应数据

xhttp.onreadystatechange = function() {if (this.readyState == 4 && this.status == 200) {alert(this.responseText);}
}

2,案例

验证用户是否存在

    @Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.接收用户名String username = req.getParameter("username");//2.调用service查询User对象boolean flag = true;//3.响应标记resp.getWriter().write(""+flag);}
<script>//1.给用户输入框绑定,失去焦点事件document.getElementById("username").onclick=function (){//2.发送请求var username = this.value;//2.1 创建核心对象// 创建 XMLHttpRequest 对象const xhttp = new XMLHttpRequest();// 定义回调函数xhttp.onload = function() {// 您可以在这里使用数据}//2.2 发送请求xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet?username"+username);xhttp.send();//2.3 获取相应xhttp.onreadystatechange = function() {if (this.readyState == 4 && this.status == 200) {if (this.responseText == "true"){//用户名存在,显示提示信息document.getElementById("username_err").style.display='';}else {//用户名不存在,清楚提示信息document.getElementById("username_err").style.display='none';}}}}
</script>

3,Axios

Axios对原生的AJAX进行封装,简化书写

3.1 Axios快速入门

3.1.1 引入axios的js文件

<script src="js/axios-0.18.0.js"><script>

3.1.2 使用axios发送请求,并获取响应结果

//1.get
axios({method:"get",url:"http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan"
}).then(function (resp){alert(resp.data);
})
//2.post
axios({method:"post",url:"http://localhost:8080/ajax-demo/axiosServlet",data:"username=zhangsan"
}).then(function (resp){alert(resp.data);
})

3.2 Axios请求方法别名

为了方便起见,Axios已经为所有支持的请求方法提供了别名

方法名作用
get(url)发起GET方式请求
post(url,请求参数)发起POST方式请求
//1.get
axios.get("http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan").then(function (resp){alert(resp.data);
})
//2.post
axios.post("http://localhost:8080/ajax-demo/axiosServlet","username=zhangsan").then(function (resp){alert(resp.data);
})

原版的阅读性更高,而这种则更加简单

4,JSON

概念:JavaScript Object Notation。JavaScript对象表示法

由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输

 4.1 JSON基础语法

var 变量名 ={"key1":value1,"key2":value2,...};

示例:

var json ={"name":"zhansan","age":23,"address":["北京","上海","西安"]};

获取数据:

变量名.key
json.name

value的数据类型为:

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true 或false)

数组(在方括号中)

对象(在花括号中)

null

4.2 JSON数据和Java对象转换

请求数据:JSON字符串转为Java对象

响应数据:Java对象转为JSON字符串

Fastjson是阿里巴巴提供的一个Java语言编写的高性能功能完善的JSON库,是目前Java语言中最快的JSON库,可以实现Java对象和JSON字符串的相互转换

4.2.1 导入坐标

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.62</version>
</dependency>

4.2.2 Java对象转JSON

//1.将java对象转为json字符串
User user = new User();
user.setId(1);
user.setUsername("zhangsan");
user.setPassword("123");String jsonString = JSON.toJSONString(user);System.out.println(jsonString);//{"id":1,"password":"123","username":"zhangsan"}

4.2.3 JSON字符串转Java对象

//2.将JSON转化为java对象
User u  = JSON.parseObject("{\"id\":1,\"password\":\"123\",\"username\":\"zhangsan\"}",User.class);
System.out.println(u);//User{id=1, username='zhangsan', password='123'}

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

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

相关文章

【MATLAB源码-第170期】基于matlab的BP神经网络股票价格预测GUI界面附带详细文档说明。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 基于BP神经网络的股票价格预测是一种利用人工神经网络中的反向传播&#xff08;Backpropagation&#xff0c;简称BP&#xff09;算法来预测股票市场价格变化的技术。这种方法通过模拟人脑的处理方式&#xff0c;尝试捕捉股票…

欧美用户真实反馈!他们为什么选择爱可声助听器?

在竞争激烈的助听器市场上&#xff0c;爱可声助听器在欧美地区赢得了广泛的认可和好评。为什么越来越多的欧美用户选择爱可声助听器呢&#xff1f; 约翰&#xff0c;纽约的退休音乐教师 约翰是一位热爱音乐的退休音乐教师&#xff0c;他的一生都与音乐相伴&#xff0c;从年轻…

前端适配方案

rem 单位实际上既不是响应式布局、也不是流式布局或弹性布局的概念。rem 是一种相对长度单位&#xff0c;它是相对于根元素&#xff08;html 元素&#xff09;的字体大小来计算实际长度的单位。 响应式布局、弹性布局和流式布局是网页设计中常用的三种布局方式&#xff0c;它们…

常用的AD规则设置

目录 规则编辑器&#xff1a; 间距规则&#xff1a; 线宽规则&#xff1a; 过孔规则&#xff1a; 铺铜设置&#xff1a; 生成制造过孔&#xff1a; 过孔之间间距&#xff1a; 最小阻焊层间距&#xff1a; 丝印到阻焊的距离&#xff1a; 丝印到丝印距离&#xff1a; 走…

【洛谷 P1101】单词方阵 题解(dfs深度优先搜索)

题目描述 给一 nn 的字母方阵&#xff0c;内可能蕴含多个 yizhong 单词。单词在方阵中是沿着同一方向连续摆放的。摆放可沿着 88 个方向的任一方向&#xff0c;同一单词摆放时不再改变方向&#xff0c;单词与单词之间可以交叉&#xff0c;因此有可能共用字母。输出时&#xff…

01使用调试工具

文章目录 前言一、用openocd打开单片机二、利用4444端口向单片机写入hex文件三、利用3333端口和gdb进行调试四、之前我出的问题总结 前言 之前写了一篇关于在linux下搭建stm32标准库的文章后&#xff0c;有一些小伙伴们还是出现了一些奇奇怪怪的错误&#xff0c;这一篇文章就是…

JDK21|借鉴了近十种语言,String终于变好用了

作者:鱼仔 博客首页: https://codeease.top 公众号:Java鱼仔 前言 要想看官方对于JDK21的更新说明&#xff0c;可以直接跳转到下面这个官方网站中 官网地址为&#xff1a;https://openjdk.org/projects/jdk/21/ JDK21是最新的LTS版本&#xff0c;里面添加了不少新的特性&…

Java常用Lambda表达式

定义&#xff1a; Lambda表达式是一种在编程语言中表示匿名函数的方法。它可以在需要函数作为参数的地方使用&#xff0c;并且可以简洁地表示一个函数的定义。Lambda表达式最初由函数式编程语言引入&#xff0c;但现在已经成为许多编程语言中的常见特性。 基本语法&#xff1a;…

14个Python自动化实战脚本

1、批量文件重命名神器在工作中&#xff0c;我们常常需要对大量文件进行批量重命名&#xff0c;Python帮你轻松搞定&#xff01; import os def batch_rename(path, prefix, suffix):for i, filename in enumerate(os.listdir(path)):new_name f"{prefix}{i:03d}{suffix…

YOLOv9改进策略:IoU优化 | Wasserstein Distance Loss,助力小目标涨点

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文独家改进&#xff1a;基于Wasserstein距离的小目标检测评估方法 Wasserstein Distance Loss | 亲测在多个数据集能够实现涨点&#xff0c;对小目标、遮挡物性能提升明显 &#x1f4a1;&#x1f4a1;&#x1f4a1;MS COCO和PASC…

Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)

此模块将网络通信模块和业务处理模块进行了合并 网络通信通过httplib库搭建完成业务处理&#xff1a; 文件上传请求&#xff1a;备份客户端上传的文件&#xff0c;响应上传成功客户端列表请求&#xff1a;客户端请求备份文件的请求页面&#xff0c;服务器响应文件下载请求&…

科兴未来|创客天下·杭向未来 2024杭州市海外高层次人才创新创业大赛报名中!

为加快建设社会主义现代化国际大都市&#xff0c;吸引海外高层次人才及团队携高新技术项目来杭创新创业&#xff0c;经杭州市委、市政府同意&#xff0c;特举办“创客天下•杭向未来 2024杭州市海外高层次人才创新创业大赛”&#xff08;以下简称“大赛”&#xff09;。现就有关…

C# 类的操作

类的操作 C#类的创建等C# 中的构造函数C# 中的析构函数C# 类的静态成员 C#类的继承基类和派生类基类的初始化 C#类的创建等 C# 中的构造函数 C#构造函数 类的 构造函数 是类的一个特殊的成员函数&#xff0c;当创建类的新对象时执行。 构造函数的名称与类的名称完全相同&#…

【王道训练营】第3题 判断某个年份是不是闰年,如果是闰年,请输出“yes”,否则请输出“no”

文章目录 引言闰年初始代码代码改进改进1&#xff1a;添加提示信息改进2&#xff1a;代码格式改进3&#xff1a;变量命名 其他实现方式使用if-else语句使用函数使用三元操作符 结论 引言 在公历中&#xff0c;闰年的规则如下&#xff1a;如果某个年份能被4整除但不能被100整除…

Java回溯算法知识点(含面试大厂题和源码)

回溯算法是一种通过试错来解决问题的算法&#xff0c;它尝试分步解决一个问题。如果发现当前的步骤不能得到有效的解决方案&#xff0c;它将取消上一步或几步的计算&#xff0c;再尝试其他的解决方案。回溯算法通常用递归方法实现&#xff0c;适用于解决组合问题、划分问题、排…

基于SpringBoot的“原创歌曲分享平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“原创歌曲分享平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 平台功能结构图 平台首页界面图 用户注册界面…

nvic优先级溢出

nvic的抢占优先级大于当前的配置群组所要求的最大上限&#xff0c;则真正优先级为数值的溢出部分&#xff1b;如果溢出部分为0则循环为最大数据&#xff1a; 如上图所示&#xff1a;中断分组为2&#xff1a; 因此优先级因为0--3 TICK_INT_PRIORITY等于0xf即为15&#xff1b;与3…

【Java多线程】1——多线程知识回顾

1 多线程知识回顾 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star…

一些有深度的MySQL问题和答案

什么是数据库事务&#xff0c;并解释ACID属性是什么&#xff1f;如何确保事务的原子性、一致性、隔离性和持久性&#xff1f; 数据库事务是一组数据库操作的逻辑单元&#xff0c;要么全部成功执行&#xff0c;要么全部失败回滚。ACID是指事务的四个属性&#xff1a;原子性&…

《外观模式(极简c++)》

本文章属于专栏- 概述 - 《设计模式&#xff08;极简c版&#xff09;》-CSDN博客 模式说明 方案&#xff1a; 外观模式提供了一个统一的接口&#xff0c;简化了一组复杂子系统的访问方式。优点&#xff1a; 将客户端与子系统解耦&#xff0c;降低了复杂性。提高了代码的灵活性…