【Java】数据交换 Json 和 异步请求 Ajax

 🎄欢迎来到@边境矢梦°的csdn博文,本文主要讲解Java 中 数据交换和异步请求 Json&Ajax 的相关知识🎄


🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈
🎆喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路🎆

Ps: 月亮越亮说明知识点越重要 (重要性或者难度越大)🌑🌒🌓🌔🌕  

在这里插入图片描述

目录

一. JSON

🌓1. JSON介绍

🌓2. JSON 的定义格式

🌕3. JSON 规则

🌔4. JSON 对象和字符串对象转换(javaScript)

🌓5. JSON 在 java 中使用

二. ajax

🌓1. Ajax基本介绍 

🌓2. Ajax特点

🌓3. Ajax 经典应用场景

🌕4. Ajax基本原理

🌓5. 原生Ajax

🌓6. JQuery 的 Ajax 请求


 jQuery 参考手册 - Ajax (w3school.com.cn)

一. JSON

JSON 具有自我描述性,更易理解 , 一句话,非常的好用

1. JSON介绍

🌸JSON: JavaScript Object Notation(JavaScript 对象标记法)。

📌JSON 是一种存储和交换数据的语法。

🎈JSON 是通过 JavaScript 对象标记法书写的文本。

🌸JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 (String)

📌JSON易于阅读和编写的文本形式表示数据

🎈JSON数据使用键值对的方式进行组织,并且可以包含数组、对象和简单的数据类型(例如字符串、数字、布尔值和null)

JSON的语法规则相对简单,它由以下几个基本结构组成:

  • 对象(Object):使用花括号{}表示,对象是由键值对组成的无序集合,每个键值对之间使用逗号分隔。
  • 数组(Array):使用方括号[]表示,数组是由值组成的有序集合,每个值之间使用逗号分隔。
  • 值(Value):表达数据的不同类型,可以是字符串、数字、布尔值、对象、数组或null。
  • 键值对(Key-Value):表示对象中的属性和对应的值,键和值之间用冒号:分隔。
  • 字符串(String):由双引号""或单引号’'括起来的Unicode字符序列。

2. JSON 的定义格式

var 变量名 = {
        "k1" : value, // Number 类型
        "k2" : "value", // 字符串类
        "k3" : [],// 数组类型
        "k4" : {}, // json 对象类型
        "k5" : [{},{}] // json 数组
};

以下是一个简单的JSON对象的例子: 

{"name": "John","age": 30,"isStudent": true,"hobbies": ["reading", "music", "sports"],"address": {"street": "123 Main St","city": "New York"}
}

3. JSON 规则

1) 映射(元素/属性)用冒号 : 表示, " 名称 ": , 注意名称是字符串,因此要用双引号引起
2) 并列的数据之间用逗号 , 分隔。 " 名称 1": ," 名称 2":
3) 映射的集合(对象)用大括号 {} 表示 {" 名称 1": ," 名称 2": }
4) 并列数据的集合(数组)用方括号 [] 表示 [{" 名称 1": ," 名称 2": }, {" 名称 1": ," 名称 2": }]
5) 元素值类型: string, number, object, array, true, false, null
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>json 快速入门案例</title><script type="text/javascript">var myJson = {"key1": "快速入门案例", // 字符串"key2": 123, // Number"key3": [1, "hello", 2.3], // 数组"key4": {"age": 12, "name": "jack"}, //json 对象"key5": [ //json 数组{"k1": 10, "k2": "milan"}, {"k3": 30, "k4": "smith"}]};//访问 json 的属性console.log("key1= " + myJson.key1);// 访问 json 的数组属性console.log("key3[1]= " + myJson.key3[1]); // hello// 访问 key4 的 name 属性console.log("name= " + myJson.key4.name); // jack// 访问 key5 json 数组的第一个元素console.log("myJson.key5[0]= " + myJson.key5[0]); //[object, object]console.log("myJson.key5[0].k2= " + myJson.key5[0].k2)// milan</script>
</head>
<body>
<h1>json 快速入门案例</h1>
</body>
</html>

4. JSON 对象和字符串对象转换(javaScript)

1. JSON.stringify(json) 功能 : 将一个 json 对象转换成为 json 字符串 [ 简单说名字来源 .] Serialize
2. JSON.parse( jsonString ) 功能 : 将一个 json 字符串转换成为 json 对象  
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JSON 对象和字符串对象转换</title><script type="text/javascript">// 一个 json 对象var jsonObj = {"name": "对象和字符串对象转换", age: 10};//JSON 是一个 build-in 对象,内建对象,有方法可以使用console.log(JSON)// 把 json 对象转换成为字符串对象var jsonStr = JSON.stringify(jsonObj);console.log(jsonStr);// 把 json 对象的字符串,转换成为 json 对象var jsonObj2 = JSON.parse(jsonStr);console.log(jsonObj2);</script>
</head>
<body>
<h1>JSON 对象和字符串对象转换</h1>
</body>
</html>

注意事项和细节
1 JSON.springify(json 对 象 ) 会 返 回对 应 string, 并 不 会影 响 原 来 json 对 象 ,
2 JSON.parse(string) 函数会返回对应的 json 对象 , 并不会影响原来 string
3 、在定义 Json 对象时 , 可以使用 ' ' 表示字符串 , 比如 var json_person = { "name" : "jack" , "age" : 100 }; 也可以写成 var json_person = { 'name' : 'jack' , 'age' : 100 };
4 、但是在把原生字符串转成 json 对象时 , 必须使用 "", 否则会报错 比如: var str_dog = "{'name':' 小黄狗 ', 'age': 4}" ; json 就会报错  
5 JSON.springify(json 对象 ) 返回的字符串 , 都是 "" 表示的字符串 , 所以在语法格式正确 的情况下 , 是可以重新转成 json 对象的  

5. JSON java 中使用

说明
        1. java 中使用 json ,需要引入到第 3 方的包 gson.jar
        2. Gson 是 Google 提供的用来在 Java 对象 JSON 数据 之间进行映射的 Java 类库。

        3. 可以对 JSON 字符串 和 Java 对象相互转换
JSON Java 中应用场景
        1. Javabean 对象和 json 字符串 的转换
        2. List 对象和 json 字符串 的转换
        3. map 对象和 json 字符串 的转换

 

应用场景示意图
    public static void main(String[] args) {// new 一个 gson 对象。引入 gson 包Gson gson = new Gson();//1. java 对象和 json 的转换System.out.println("\n=== 1. java 对象和 json 的转换 ====");Book book = new Book(100, "韩顺平零基础学 Java");// 把对象转成为 json 字符串String bookStr = gson.toJson(book);System.out.println(bookStr);// 把 json 字符串转换成为 java 对象Book book2 = gson.fromJson(bookStr, Book.class);System.out.println(book2);//2 List 集合和 json 的转换System.out.println("\n======2 List 集合和 json 的转换======");ArrayList<Book> bookList = new ArrayList<>();bookList.add(new Book(200, "天龙八部"));bookList.add(new Book(300, "神雕侠侣"));//将 list 转成 json 字符串String bookListStr = gson.toJson(bookList);System.out.println("bookListStr=" + bookListStr);//将 json 字符串转成 List 集合方式 1List<Book> bookList2 = gson.fromJson(bookListStr, new BookType().getType());System.out.println("bookList2=" + bookList2);//将 json 字符串转成 List 集合方式 2- 使用 匿名内部类List<Book> bookList3 = gson.fromJson(bookListStr, new TypeToken<List<Book>>() {}.getType());System.out.println("bookList3=" + bookList3);//3. map 集合和 json 的转换System.out.println("\n====3. map 集合和 json 的转换=====");Map<String, Book> bookMap = new HashMap<>();bookMap.put("sn1", new Book(10, "射雕英雄传"));bookMap.put("sn2", new Book(20, "碧血剑"));// 把 map 转换成为 jsonString bookMapStr = gson.toJson(bookMap);System.out.println("bookMapStr=" + bookMapStr + " 类 型 =" +bookMapStr.getClass());// 把 json 转成 mapMap<String, Book> bookMap2 = gson.fromJson(bookMapStr, new TypeToken<HashMap<String, Book>>() {}.getType());System.out.println("bookMap2=" + bookMap2 + " 类型=" + bookMap2.getClass());}

 JSON具有良好的可读性和可扩展性,广泛应用于Web应用程序间的数据交换、配置文件的存储和API的传输。在许多编程语言中,都提供了JSON的解析和生成库,以方便对JSON数据进行操作和处理。


二. ajax

1. Ajax基本介绍 

1. AJAX "Asynchronous Javascript And XML"(异步 JavaScript XML)

2. Ajax 是一种浏览器 异步发起请求 ( 指定发哪些数据 ) 局部更新页面 的技术
3. 传统的方式只能刷新整个页面

AJAX 是开发者的梦想,因为您能够:

  • 不刷新页面更新网页
  • 在页面加载后从服务器请求数据
  • 在页面加载后从服务器接收数据
  • 在后台向服务器发送数据

 Ajax(Asynchronous JavaScript and XML)是一种用于创建快速、动态网页的技术。它通过在后台与服务器进行数据交换,使网页能够在无需重新加载整个页面的情况下更新部分内容。

🎈传统的网页交互方式是用户与服务器进行完整的页面请求和响应,即用户执行某个操作,服务器接收请求并返回完整的新页面。这种方式存在效率低下和用户体验差的问题。

📌而Ajax通过在后台使用JavaScript和XML或其他数据格式, 使网页能够

        🌸在不刷新整个页面的情况下与服务器进行数据交互和部分内容更新🌸。

        通过异步通信,Ajax 可以在用户完成某个操作之后,将用户请求发送到服务器,并在接收到服务器的响应后,动态地更新页面的相应部分,而不需要重新加载整个页面。

2. Ajax特点

Ajax技术的特点包括:

  • 异步通信:通过使用异步通信,用户可以继续与页面交互,而无需等待服务器响应。
  • 数据交换:Ajax可以与服务器进行数据交换,可以在不刷新整个页面的情况下更新页面的局部内容。
  • DOM操作:Ajax可以使用JavaScript操作DOM,实现动态页面的创建和更新。
  • 增强用户体验:由于Ajax可以快速地更新页面的一部分,因此可以提供更快速、更流畅的用户体验。

尽管Ajax中的“X”代表XML,但实际上,现代的Ajax应用程序通常使用JSON、HTML或纯文本格式来传输数据,而不是XML。

Ajax已经成为现代Web应用程序开发的重要技术之一,被广泛应用于各种Web应用,包括社交媒体、在线购物以及各种在线工具和应用程序。

3. Ajax 经典应用场景

1. 搜索引擎根据用户输入关键字,自动提示检索关键字
2. 动态加载数据,按需取得数据【树形菜单、联动菜单 ...
3. 改善用户体验。【输入内容前提示、带进度条文件上传 ...
4. 电子商务应用。 【购物车、邮件订阅 ...
5. 访问第三方服务。【访问搜索服务、 rss 阅读器】
6. 页面局部刷新 , https://piaofang.maoyan.com/dashboard

4. Ajax基本原理

 

 5. 原生Ajax

function checkUser() {var xhr = new XMLHttpRequest();var uname = document.getElementById("uname").value;xhr.open("GET", "/ajaxStu/check?username=" + uname, true);xhr.onreadystatechange = function () {// console.log("xhr = ",  xhr);if (xhr.readyState === 4 && xhr.status === 200) {if(xhr.responseText.trim() === "") {document.getElementById("myres").value = "用户名可用";} else {document.getElementById("myres").value = "用户名不可用";}}document.getElementById("div1").innerText = xhr.responseText;}xhr.send();}

6. JQuery Ajax 请求

 

jQuery(function () {$("#check").click(function () {window.alert("hello")$.ajax({url:"/ajaxStu/check2",type:"POST",data:{username:$("#uname").val(),date:new Date()},success:function (date, status, xhr) {console.log("成功~");console.log(date);console.log(status);console.log(xhr);if("king" === date.username) {$("#myres").val("用户不可用");} else {$("#myres").val("用户可用");}$("#div1").html(JSON.stringify(date));},error:function () {console.log("失败~")},dataType:"json"})$.get("/ajaxStu/check2",{username:$("#uname").val(),date:new Date()},function (date, status, xhr) {console.log("get()成功~");console.log(date);console.log(status);console.log(xhr);if("king" === date.username) {$("#myres").val("用户不可用");} else {$("#myres").val("用户可用");}$("#div1").html(JSON.stringify(date));},"json")$.post("/ajaxStu/check2",{username:$("#uname").val(),date:new Date()},function (date, status, xhr) {console.log("post()成功~");console.log(date);console.log(status);console.log(xhr);if("king" === date.username) {$("#myres").val("用户不可用");} else {$("#myres").val("用户可用");}$("#div1").html(JSON.stringify(date));},"json")$.getJSON("/ajaxStu/check2",{username:$("#uname").val(),date:new Date()},function (date, status, xhr) {console.log("getJSON()成功~");console.log(date);console.log(status);console.log(xhr);if("king" === date.username) {$("#myres").val("用户不可用");} else {$("#myres").val("用户可用");}$("#div1").html(JSON.stringify(date));})})})

 总结

Json(JavaScript Object Notation)是一种轻量级的数据交换格式,采用键值对的形式来表示数据。它广泛应用于Web开发中,特别适合于前后端数据传输和存储。

Ajax(Asynchronous JavaScript and XML)是一种在Web应用中实现异步通信的技术。通过Ajax,前端可以发送异步请求到服务器,获取数据并进行页面更新,而无需刷新整个页面。这项技术使得用户体验更加流畅,同时减轻了服务器的负担。

Json和Ajax经常配合使用。通过Ajax发送请求,服务器可以将数据以Json格式返回给前端,前端再解析Json数据进行页面渲染或其他操作。Json的简洁性和易读性使得数据传输更加高效,而Ajax的异步通信则能提升用户交互体验。

总的来说,Json是一种数据格式,用于表示数据,而Ajax是一种实现异步通信的技术。它们的结合可以帮助开发人员构建高效、流畅的Web应用。

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

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

相关文章

go语言从0基础到安全项目开发实战

一.环境搭建并helloworld 搭建环境比较简单 1.1安装SDK 到以下链接下 Go下载 - Go语言中文网 - Golang中文社区 下载windows版本64位zip包 https://studygolang.com/dl/golang/go1.20.7.windows-amd64.zip 1.2配置环境变量 不配置的话就只能在bin目录下才能运行go命令 …

linux安装ftp

一、安装 参考博客 https://blog.csdn.net/dafeigecsdn/article/details/126518069 rpm -qa |grep vsftpd # 查看是否安装ftp yum -y install vsftpd # 安装vsftpuseradd -d /home/lanren312 lanren312 # 指定在/home目录下创建用户 passwd lanren312 # 给用户设置密码 # 输…

20220209学速写

抖音上学速写感觉不太行呀。虽然看起来简单但感觉手很笨&#xff0c;感觉从基础入门后开始讲的&#xff0c;而我还缺少基础。。。

人物速写示范(30张图)

人物速写示范&#xff08;30张图&#xff09; 2007/01/11 10:59 扫描自《叶老师速写教学示范》——湖北美术出版社叶军&#xff0c;1964年生于湖北沙市&#xff0c;毕业于湖北美术学院&#xff0c;学士学位。现为湖北美术学院副教授&#xff0c;中国画系副主任&#xff0c;研究…

学习速写的方法有哪些?如何快速学会速写?

本文由“学美术上美术集网校”原创,图片素材来自网络,仅供学习分享 学习速写的方法有哪些?如何快速学会速写?很多初学绘画者,包括有些已经进行过一些素描训练的学画青少年想画速写,总感到无从下手。在与这些初学绘画者的接触中,我总是尽量告诉他们一些速写方面的训练方…

Vscode 速写 HTML

Vscode 速写 HTML 文章目录 Vscode 速写 HTML1. 快速生成HTML结构2. 快速生成标签3. 生成指定标签4. 插件 1. 快速生成HTML结构 输入 ! 后按 Tab <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&qu…

速写篇—速写打型需要几步?这5步准确起型~

速写怎么打好型&#xff1f;速写打型需要哪些步骤&#xff1f;很多小伙伴在学习美术速写的时候都会遇到各种问题今天美术集网校带大家了解下速写如何打好型&#xff1a; 画速写人物真的很难吗?如果你画的人物得不到高分&#xff0c;你可能需要考虑一下是不是打形没有画好&…

速写想要拿高分?这些要点能提分~

速写怎么画&#xff1f;怎么画速写才能提高分&#xff1f;很多小伙伴在学习美术都会遇到各种问题今天美术集网校带大家了解下速写提高分的方法吧&#xff1a; 速写想要取得高分&#xff0c;首先就要先突破难点&#xff0c;找到短板&#xff0c;逐个克服才能更好的把握速写。 首…

学速写的步骤来啦,零基础学习更简单

最近美术集小编收到了很多新手学习速写的问题点&#xff0c;想要学习速写&#xff0c;应该从哪些步骤开始呢&#xff1f;今天广州美术集网校就帮大家整理了一些画速写的步骤&#xff0c;掌握好这些步骤&#xff0c;速写的学习就像开了加速器&#xff1a; ​ 第一&#xff0c;我…

先别急着练速写,人物慢写才是第一步

人物慢写怎么画&#xff1f;人物慢写和速写的区别在哪里&#xff1f;很多小伙伴在学习速写都会遇到各种问题今天美术集网校带大家了解下人物速写和慢写的区别之处吧&#xff1a; ​ 想要学好速写&#xff0c;我们就要先了解速写&#xff0c;慢写是学习速写的第一步&#xff0c…

25个速写素描Procreate笔刷

这套画笔套装共包含25支Procreate画笔&#xff0c;其中包括9个线条笔刷、7支孵化笔刷、5个条纹画笔、煤炭画笔和3个填充画笔。每支笔都对笔的压力和倾斜度非常敏感&#xff0c;能够精确地捕捉你的绘画动作&#xff0c;让你轻松实现所需的效果。

风格速写(代码敲累了)

就这样吧&#xff0c;外面下着雨&#xff0c;电脑待着机&#xff0c; 而我充着电

美术集速写模特姿势参考大全,又酷又飒的姿势你画过了吗?

我们平常画的速写模特一般都是站姿、坐姿、或者蹲姿&#xff0c;这些都是最经常练习到的&#xff0c;今天美术集给大家分享一波养眼的动态速写&#xff0c;快看看这些速写姿势你都画过了没有&#xff1f; 首先&#xff0c;来一波正常速写图&#xff1a; 接来下就是比较冷门的速…

想要画好人物速写写生画,这些技巧要把握好

想要画好人物速写写生画&#xff0c;需要注意哪些技巧呢&#xff1f;很多小伙伴在学习人物速写的时候都会遇到各种问题&#xff0c;今天广州美术集网校小编带大家了解下人物速写技巧画法&#xff1a; 人物速写&#xff0c;是以人物为描绘对象的快速写生方法。它为画者了解人体结…

19张动作速写参考,人物灵活就靠这些!

概念原画师Sai Foo作品&#xff0c; 人物动作速写参考 为了帮助大家在学习板绘绘画的路上&#xff0c;少走弯路&#xff0c;少掉坑&#xff0c;大家可以去听一位板绘绘画高手的课程&#xff0c;他每天晚上8点都会在网上有免费的直播课&#xff0c;会讲到板绘原画插画&#xff…

教程 | 听说,你画画很慢,不如30分钟画速写

听说&#xff0c;你画画很慢很慢...... 听说&#xff0c;你一画就是一天...... 1 白描虽然写意&#xff0c;但是却会花去不少时间。那么有没有什么办法可以提高绘画的速度呢&#xff1f; 朋友&#xff0c;你为什么不尝试一下画画速写呢&#xff1f; 画速写 速写是一项训练造型综…

思维速写板

思维速写板 思维速写板是一个快速建立大脑概念映像并理顺其关系的工具&#xff0c;并综合了自由文本、思维导图&#xff08;级联关系&#xff09;、涂鸦、大纲、OCR抓文字、抓屏、屏幕录制等功能。 概念与关系是思维中的基本单元&#xff0c;一般情况下&#xff0c;用文字表示概…

速写总是画不好发型?绘画手法很重要

速写中的头发怎么画&#xff1f;如何才能画好头发发型&#xff1f;很多小伙伴在学习美术的都会遇到各种问题今天美术集网校带大家了解下头发发型的绘画方法&#xff1a; 首先&#xff0c;头部是人物速写的绘画重点&#xff0c;头发的绘画也会关系到整个作品&#xff0c;所以就需…

量子速写(网站+小程序)

使用方法非常简单&#xff01;只需要输入标题&#xff0c;选择文章长短&#xff0c;它就能给你生成一篇AI文章 泪奔&#xff01;它是根据能在网上搜到的相关信息&#xff0c;进行AI组合的&#xff0c;所以不涉及侵权&#xff0c;并且写的合情合理&#xff01; 加大难度试…