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.hqwc.cn/news/573743.html

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

相关文章

【氮化镓】位错对氮化镓(GaN)电子能量损失谱(EEL)的影响

本文献《Influence of dislocations on electron energy-loss spectra in gallium nitride》由C. J. Fall等人撰写&#xff0c;发表于2002年。研究团队通过第一性原理计算&#xff0c;探讨了位错对氮化镓&#xff08;GaN&#xff09;电子能量损失谱&#xff08;EEL&#xff09;…

【教程】iOS如何抓取HTTP和HTTPS数据包经验分享

&#x1f4f1; 在日常的App开发和研发调研中&#xff0c;对各类App进行深入的研究分析时&#xff0c;我们需要借助专业的抓包应用来协助工作。本文将介绍如何使用iOS手机抓包工具来获取HTTP和HTTPS数据包&#xff0c;并推荐一款实用的抓包应用——克魔助手&#xff0c;希望能够…

【正点原子FreeRTOS学习笔记】————(14)事件标志组

这里写目录标题 一、事件标志组简介&#xff08;了解&#xff09;二、事件标志组相关API函数介绍&#xff08;熟悉&#xff09;三、事件标志组实验&#xff08;掌握&#xff09; 一、事件标志组简介&#xff08;了解&#xff09; 事件标志位&#xff1a;用一个位&#xff0c;来…

【C++】搜索二叉树

1. 二叉搜索树 a. 二叉搜索树的概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根…

专题二_滑动窗口(1)

目录 209. 长度最小的子数组 解析 题解 3. 无重复字符的最长子串 解析 题解 1004. 最大连续1的个数 III 解析 题解 209. 长度最小的子数组 209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int minSubArrayLen(int…

DREAM: A Dynamic Scheduler for Dynamic Real-time Multi-model ML Workloads——论文泛读

ASPLOS 2024 Paper 论文阅读笔记整理 问题 新兴的实时多模型ML&#xff08;RTMM&#xff09;工作负载&#xff0c;如AR/VR和无人机控制&#xff0c;涉及各种粒度的动态行为&#xff1a;任务、模型和模型中的层。这种动态行为给ML系统中的系统软件带来了新的挑战&#xff0c;与…

大话设计模式之装饰模式

装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许向现有对象动态地添加新功能&#xff0c;同时又不改变其结构。装饰模式通过将对象放入包装器中来实现&#xff0c;在包装器中可以动态地添加功能。 在装饰模式中&#xff0c;通常会有…

吉时利KEITHLEY DMM7510数字万用表

181/2461/8938产品概述&#xff1a; Keithley DMM7510 结合了精密数字万用表、图形触摸屏显示器和高速、高分辨率数字转换器的所有优点&#xff0c;创造了业界第一&#xff1a;图形采样万用表。利用 DMM7510 的电压或电流数字化功能&#xff0c;捕获和显示波形和瞬态事件变得更…

【详细讲解PostCSS如何安装和使用】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d; 希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

基于资源的约束委派(中)

烂番茄 基于资源的约束委派通过修改自身msDS-AllowedToActOnBehalfOfOtherIdentity字段达到委派的目的&#xff0c;默认把这台域机器拉入域的域 用户有这个权限&#xff0c;还有谁有&#xff1f;因为evil这台机器通过 07 用户拉入域内&#xff0c;通过AdFind遍历evil的ACL&…

SQL107 将两个 SELECT 语句结合起来(二)(不用union,在where里用or)

select prod_id,quantity from OrderItems where quantity 100 or prod_id like BNBG% order by prod_id;在where子句里使用or

【设计模式】中介者模式的应用

文章目录 1.概述2.中介者模式的适用场景2.1.用户界面事件2.2.分布式架构多模块通信 3.总结 1.概述 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;它用于解决对象间复杂、过度耦合的问题。当多个对象&#xff08;一般是两个以上的对象&…