1、Ajax
1、Ajax是一种异步刷新技术,用来在当前页面内响应不同的请求内容
2、是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术
3、通过在后台与服务器进行少量数据交换,实现异步更新
同步和异步:
客户端和服务器相互通信的基础上
同步:客户端必须等待服务器端的响应,在等待期间客户端不能做其他操作
异步:客户端不需要等待客户端的响应,在服务器处理请求的过程中,客户端可以进行其他操作
2、Ajax的使用
$.ajax:
<script>
function send_ajax() {
$.ajax({
url:"", //请求资源地址
type: "GET", //请求方法
data:{"键1":"值1","键2":值2}, //请求的参数。json格式(键值对)
success:function (date) { //响应成功,data为响应的数据内容
alert(date); //对响应的数据进行操作
},
error:function () { //请求失败
alert("出错了!"); //对请求失败进行处理
},
dataType:"text" //预处理响应的数据类型
});
}
</script>
$.get&$.post:
$.get(url, [data], [callback], [type])
url:请求路径
data:请求参数(json类型的键值对)
callback:回调函数(响应处理)
type:响应结果的类型
$.post(url, [data], [callback], [type])
3、JSON
1、json多用于储存和交换文本信息
2、进行数据的运输
3、JSON比XML更小,更快,更易解析
解析对象:
<script>
// 定义json对象person
let person = {"username":"张三","性别":"男","age":13};
// 解析数据: 使用forin遍历person对象
for (let key in person){
let value = person[key];
alert(key+":"+value);
}
</script>
解析数组:
<script>
// 定义json对象person
let persons = [
{"username": "张三", "性别": "男", "age": 13,},
{"username": "李四", "性别": "女", "age": 14,},
{"username": "王五", "性别": "男", "age": 15,}
];
// 解析数据: 使用forof遍历persons对象
for (let person of persons) {
// 遍历获取到每一个person对象,使用forin遍历获取属性和值
for (let key in person) {
let value = person[key];
console.log((key + ":" + value));
}
}
</script>
解析K对应的数组:
<script>
// 定义json对象person
let obj = {"girls":["小泽","小苍","小莉","小波"]};
console.log("----------方式一---------");
// 获取对象中的key
for (let key in obj) {
// key,获取的值对应的是数组
let value = obj[key];
for (let name of value){
console.log(name);
}
}
console.log("----------方式二---------");
// 通过对象名.键名获取对应的value
let girls = obj.girls;
for (let girl of girls){
console.log(girl);
}
</script>
使用$.each遍历JSON对象:
<script>
var obj = {
"persons": [
{"name": "张三", "age": 23, "gender": true},
{"name": "李四", "age": 24, "gender": true},
{"name": "王五", "age": 25, "gender": false}
]
};
$.each(obj,function (index,element) {
// 遍历获取到每一个对象{"name": "张三", "age": 23, "gender": true}
for (let person of element){
for (let key in person) {
let value = person[key];
console.log((key + ":" + value));
}
}
});
</script>
4、JSON对象与JAVA对象的转换
json常见解析器:Jsonlib,Gson,fastjson,jackson
1、导包,jackson相关jar包
2、创建核心对象 ObjectMapper
3、调用ObjectMapper的相关方法进行转换
java对象转换json:
writeValue(File destPath, Object obj)
将obj对象转换为JSON字符串,并保存到指定的文件中
writeValue(OutputStream os, Object obj)
将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
writeValue(Writer writer, Object obj)
将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
writeValueAsString(Object obj)
将对象转为json字符串
jackson相关注解:
@Jsonlgnore 排除属性,意思是不json化指定属性
@JsonFormat 属性值格式化,用于date属性:@JsonFormat(pattern = "yyyy-MM-dd")
ObjectMapperUtil工具类:
public class ObjectMapperUtil {
// 将User对象序列化为Json对象
public static String objectToJson(User user) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);
return json;
}
// 将List对象序列化为Json对象
public static String listToJson(List<User> list) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(list);
return json;
}
// 将Map对象序列化为Json对象
public static String mapToJson(Map<String, ArrayList<User>> map) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(map);
return json;
}
}
json转换java对象:
readValue(String json,Class clazz)
将指定的json字符串转换成指定的对象