Ajax
简介
AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。
AJAX 有两个作用:
- 1、与服务器进行数据交换。可以使用 Ajax 和服务器进行通信
- 2、异步交互。可以在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
同步和异步
同步发送请求过程
浏览器页面在发送请求给服务器,在服务器处理请求的过程中,浏览器页面不能做其他的操作。只能等到服务器响应结束后,浏览器页面才能继续做其他的操作。
异步发送请求过程
浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面还可以做其他的操作。
快速入门
服务端实现
@WebServlet("/ajaxServlet")
public class AjaxServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//响应数据
response.getWriter().write("hello Ajax~");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
客户端实现
在 webapp 下创建名为 ajax.html 的页面,在该页面书写 Ajax 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
//1. 创建核心对象,不同的浏览器创建的对象是不同的
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//2. 发送请求
xhttp.open("GET", "http://localhost:8080/ajax-demo/ajaxServlet");//建立连接
xhttp.send();//发送请求
//3. 获取响应
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
//处理响应结果
alert(this.responseText);//弹出服务端响应的数据
}
};
</script>
</body>
</html>
运行后,在浏览器地址栏输入 http://localhost:8080/ajax-demo/ajax.html
,在 ajax.html
加载的时候就会发送 Ajax 请求,获取服务端响应的数据,“hello Ajax~”
Axios
Axios 是一个基于 promise 的网络请求库。本质上是对原生的 Ajax 进行封装,简化代码
基础语法
1、引入 axios 的 js 文件
<script src="js/axios.js"></script>
2、使用 axios 发送请求,并获取响应结果
- 发送 get 请求
axios({
method:"get",
url:"请求的URL地址?请求体"
}).then(function (resp){//用来指定请求成功之后的回调函数
alert(resp.data);//resp 是请求成功之后的结果
})
- 发送 post 请求
axios({
method:"post",
url:"请求的URL地址",
data:"请求体"
}).then(function (resp){
alert(resp.data);
});
axios() 是用来发送异步请求的,小括号中使用 js 对象传递请求相关的参数:
参数 | 描述 |
---|---|
method | 请求类型 |
url | 请求的URL地址 |
data | post请求体 |
then(函数) | 请求成功之后的回调函数 |
快速入门
后端实现
定义一个用于接收请求的servlet
@WebServlet("/axiosServlet")
public class AxiosServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("get...");
//1. 接收请求参数
String username = request.getParameter("username");
System.out.println(username);
//2. 响应数据
response.getWriter().write("hello Axios~");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("post...");
this.doGet(request, response);
}
}
前端实现
新建 axios.html 并引入 axios.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="js/axios.js"></script>
<script>
//1. get
axios({
method:"get",
url:"http://localhost:8080/axois-demo/axiosServlet?username=Tom"
}).then(function (resp) {
alert(resp.data);
})
//2. post
/*axios({
method:"post",
url:"http://localhost:8080/axois-demo/axiosServlet",
data:"username=Tom"
}).then(function (resp) {
alert(resp.data);
})*/
</script>
</body>
</html>
运行后,在浏览器地址栏输入 http://localhost:8080/axois-demo/axios.html
,在 axios.html
加载的时候就会发送 Axios 请求,获取服务端响应的数据,弹出“hello Axios~”
请求方法别名
为了方便更加简化代码, Axios 为所有支持的请求方法提供了别名。
get 请求 : axios.get(url[,config])
post 请求: axios.post(url[,data[,config])
delete 请求 : axios.delete(url[,config])
head 请求 : axios.head(url[,config])
options 请求 : axios.option(url[,config])
put 请求: axios.put(url[,data[,config])
patch 请求: axios.patch(url[,data[,config])
get请求可改为:
axios.get("/axios-demo/axiosServlet?username=Tom").then(function(resp) {
alert(resp.data);
});
post请求可改为:
axios.post("/axios-demo/axiosServlet","username=Tom").then(function(resp) {
alert(resp.data);
})
Vue3使用Axios
step1. 使用npm安装axios
npm install axios --save
step2. 我们将要使用的axios实例单独编写成一个js文件,文件夹可以建立在**src/utils/**(自己选择建立在什么地方)。命名为: axios.js
import axios from 'axios'
//使用axios下面的create([config])方法创建axios实例,其中config参数为axios最基本的配置信息。
const API = axios.create({
baseUrl:'http://localhost:8080' ,//请求后端数据的基本地址,自定义
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
timeout: 2000 //请求超时设置,单位ms
})
//导出我们建立的axios实例模块,ES6 export用法
export default API
step3. 然后在main.js中导入我们编写axios.js文件,全局配置一下axios的引用。
//main.js
import { createApp } from 'vue'
import App from './App.vue'
import axios from '@/utils/axios.js'
const app = createApp(APP); //建立一个vue3app
app.mount('#app'); //将这个vue3app全局挂载到#app元素上
app.config.globalProperties.$axios=axios; //配置axios的全局引用
Json
简介
JSON(JavaScript Object Notation ):JavaScript 对象表示法
作用:由于其语法格式简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输。
JavaScript 对象格式:
{
name:"zhangsan",
age:23,
city:"北京"
}
XML 格式:
<student>
<name>张三</name>
<age>23</age>
<city>北京</city>
</student>
JSON 格式:
{
"name":"zhangsan",
"age":23,
"city":"北京"
}
对比后就会发现 JSON 格式更简单,JSON 格式和 JS 对象格式特别像。JSON 格式中的键要求必须使用双引号括起来。
基础语法
JSON 本质就是一个字符串,但是该字符串内容是有一定的格式要求的。 定义格式如下:
var 变量名 = '{"key":value,"1 key":value,...}';
JSON 的键要求必须使用双引号括起来,而值根据要表示的类型确定。
value 的数据类型分为如下
数字(整数或浮点数)
字符串(使用双引号括起来)
逻辑值(true或者false)
数组(在方括号中)
对象(在花括号中)
var jsonStr = '{"name":"Tom","age":23,"addr":["北京","上海","西安"],"user":{"id":1,"username":"Tom"},"flag":true}'
Json和JS对象相互转换
如果是一个 JS 对象,我们就可以通过 JS对象.属性名
的方式来获取数据。
JS 提供了一个对象 JSON ,该对象有如下两个方法
方法 | 作用 | 使用方法 |
---|---|---|
parse(str) | 将 JSON 转换为 JS 对象 | var jsObject = JSON.parse(jsonStr); |
stringify(obj) | 将 JS 对象转换为 JSON | var jsonStr = JSON.stringify(jsObject) |
<script>
//1. 定义JSON字符串
var jsonStr = '{"name":"Tom","age":23,"addr":["北京","上海","西安"]}'
alert(jsonStr);
//2. 将 JSON 字符串转为 JS 对象
let jsObject = JSON.parse(jsonStr);
alert(jsObject)
alert(jsObject.name)
//3. 将 JS 对象转换为 JSON 字符串
let jsonStr2 = JSON.stringify(jsObject);
alert(jsonStr2)
</script>
Axios发送Json数据
提前定义一个 js 对象,用来封装需要提交的参数,然后使用 JSON.stringify(js对象) 转换为 JSON ,再将该 JSON 作为 axios 的 data 属性值进行请求参数的提交。
var jsObject = {name:"张三"};
axios({
method:"post",
url:"http://localhost:8080/ajax-demo/axiosServlet",
data: JSON.stringify(jsObject)
}).then(function (resp) {
alert(resp.data);
})
而 axios 是一个很强大的工具。只需要将需要提交的参数封装成 JS 对象,并将该 JS 对象作为 axios 的 data 属性值,它会自动将 JS 对象转换为 JSON 进行提交。
var jsObject = {name:"张三"};
axios({
method:"post",
url:"http://localhost:8080/ajax-demo/axiosServlet",
data:jsObject //这里 axios 会将该js对象转换为 json
}).then(function (resp) {
alert(resp.data);
})
Json和Java对象相互转换
Fastjson介绍
Fastjson 是阿里巴巴提供的一个 Java 语言编写的高性能功能完善的 JSON 库,是目前 Java 语言中最快的 JSON 库,可以实现 Java 对象和 JSON 字符串的相互转换。
Fastjson使用
1、导入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2、Java对象转JSON
将 Java 对象转换为 JSON ,只需要使用 Fastjson 提供的 JSON 类中的 toJSONString() 静态方法即可。
String jsonStr = JSON.toJSONString(obj);
3、JSON字符串转Java对象
将 JSON 转换为 Java 对象,只需要使用 Fastjson 提供的 JSON 类中的 parseObject() 静态方法即可。
User user = JSON.parseObject(jsonStr, User.class);
4、测试
public class User {
private int id;
private String username;
private String Password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
Password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return Password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", Password='" + Password + '\'' +
'}';
}
}
public class FastJsonDemo {
public static void main(String[] args) {
User user = new User();
user.setId(1);
user.setUsername("Tom");
user.setPassword("123");
System.out.println("初始user对象:"+user);
//1. 将Java对象转为JSON字符串
String jsonString = JSON.toJSONString(user);
System.out.println("转换成json:"+jsonString);
//2. 将JSON字符串转为Java对象
User u = JSON.parseObject(jsonString, User.class);
System.out.println("再转换成user对象:"+u);
}
}
/**
初始user对象:User{id=1, username='Tom', Password='123'}
转换成json:{"id":1,"password":"123","username":"Tom"}
再转换成user对象:User{id=1, username='Tom', Password='123'}
**/
Sponsor❤️
您的支持是我不断前进的动力,如果您感觉本文对您有所帮助的话,可以考虑打赏一下本文,用以维持本博客的运营费用,拒绝白嫖,从你我做起!🥰🥰🥰
支付宝 | 微信 |