AJAX:
1.概念:ASynchronous JavaScript And Xml 异步js和xml
1.异步和同步:客户端和服务器相互通信的基础上
同步:客户端必须等待服务器端的响应。等待期间,客户端不能做其他事情
异步:客户端不需要等待服务器端的响应,在服务器处理请求的
过程中,客户端可以进行其他的操作
作用:无需重新加载整个网页的情况下,能够更新部分网页的技术
通过在后台与服务器进行少量数据交换,
Ajax 可以使网页实现异步更新。
这意味着可以在不重新加载整个网页的情况下,
对网页的某部分进行更新。
优点:与传统的同步更新网页技术相比,提升了用户体验
2.实现方式:
1.原生的JS实现(了解)
2.JQuery实现
1.$.ajax()
语法:$.ajax(url, [settings])
// 使用$.ajax()发送异步请求
$.ajax({
url: "ajaxServlet", // 请求路径
type: "post", // 请求方式
// 请求参数写法一
// data: "username=jack&age=23",
// 请求参数写法二(推荐)
data: {"username":"jack", "age":12},
success: function(data) { // 响应成功后的回调函数
alert(data);
},
error: function() { // 表示如果请求出现错误,执行的回调
},
dataType: "text" // 设置接收到的响应数据的格式
});
2.$.get():get请求
$.post():post请求
语法:$.get(url,[data],[callback],[type])
参数:
url 请求路径
data 请求参数
callback 回调函数
type 响应结果类型
$.get("ajaxServlet",
{username: "rose"},
function (data) {
alert(data)
}, "text"
);
JSON:
1.概念:JavaScript Object Notation js对象表示法
JavaObject:
Person p = new Person();
p.setName("大宝贝");
JSObject
var p = {"name": "大宝贝", "gender": "男", "age": 23}
用途:json现在多用于存储和交换文本信息的语法
作用:用于数据的传输
优点:比XML更小,更快,更易解析
2.语法:
1.基本规则
数据在名称/值对中:json由键值对构成
键用引号(单双都可),也可不用
值取值类型:
数字(整数或浮点数)
字符串(在双引号中)
布尔值
数组(方括号) {"persons": [{}, {}]}
对象(花括号) {"address": {"province": "陕西", ...}}
null
数据由逗号分隔:多个键值对由逗号分隔
花括号保存对象:使用{}定义json格式
方括号保存数组:[]
嵌套格式一
var persons = {
"persons":
[{"name": "张三", "age": 23, "gender": true},
{"name": "李四", "age": 23, "gender": true},
{"name": "王五", "age": 23, "gender": false}]
嵌套格式二
var ps = [{"name": "张三", "age": 23, "gender": true},
{"name": "李四", "age": 23, "gender": true},
{"name": "王五", "age": 23, "gender": false}]
2.获取数据
1.json对象.键名
2.json对象["键名"]
3.数组对象[索引]
4.遍历json数据
// 1.基本格式json遍历
var person = {"name": "张三", age: 23, 'gender': true};
// 获取person对象中所有的键值
for (var key in person) {
alert(key + ":" + person[key]);
}
// 2.数组形式json遍历
var ps = [{"name": "张三", "age": 23, "gender": true},
{"name": "李四", "age": 24, "gender": true},
{"name": "王五", "age": 25, "gender": false}]
for (var i = 0; i < ps.length; i++) {
var p = ps[i];
for (var key in p) {
alert(key + ":" + p[key]);
}
}
3.JSON数据和Java对象的相互转换
JSON解析器:
常见解析器:jsonlib Gson fastjson jackson(springmvc内置)
1.json->java
1.使用步骤:
1.导入jackson的jar包
2.创建jackson核心对象 objectMapper
3.调用objectMapper的相关方法进行转换
1.readValue(json字符串数据, Class)
// 1.初始化JSON字符串
String json = "{\"name\":\"张三\",\"age\":23,\"gender\":\"男\",\"birthday\":\"2021-03-30 04:56\"}";
// 2.创建ObjectMapper
ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(json, Person.class);
System.out.println(person);
2.java->json
1.使用步骤:
1.导入jackson的jar包
2.创建jackson核心对象 objectMapper
3.调用objectMapper的相关方法进行转换
// 1.创建Person对象
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
// 2.创建jackson核心对象,ObjectMapper
ObjectMapper mapper = new ObjectMapper();
// 3.转换
/**
* 转换相关方法
* writeValue(参数1, obj):
* 参数1:
* File:将obj对象转换为JSON字符串,保存到指定的文件中
* Writer:将obj对象转换为JSON字符串,并将JSON数据填充到字符输出流关联的目的地(文件/网络)
* outputStream:将obj对象转换为JSON字符串,并将JSON数据填充到字节输出流关联的目的地(文件/网络)
* writeValueAsString(obj):
* 将对象转为json字符串
*/
String s = mapper.writeValueAsString(p);
System.out.println(s);
注解使用:
1.@JsonIgnore:排除属性
2.@JsonFormat:属性值的格式化
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date birthday;
复杂java对象的转换
1.List--> [{}, {}, {}]
2.Map--> {}