Ajax&&Json
什么是Ajax
Ajax是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助。简单地说,在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,并在网页上呈现出来。常见运用场景有表单验证是否登入成功、百度搜索下拉框提示和快递单号查询等。
Ajax原理是什么
Ajax请求数据流程 其中最核心的依赖是浏览器提供的XMLHttpRequest对象,它扮演的角色相当于秘书,使得浏览器可以发出HTTP请求与接收HTTP响应。浏览器接着做其他事情,等收到XMLHttpRequest返回来的数据再渲染页面。
1.浏览器让XMLHttpRequest去跟服务器要点数据
2.浏览器接着干别的事情
3.XMLHttpRequest去向服务器请求数据
4.服务器返回数据给XMLHttpRequest
5.XMLHttpRequest通知浏览器回来了
6.浏览器受到XMLHttpRequest返回的数据进行渲染页面
实现方式
JQeury实现方式
1. $.ajax()
* 语法:$.ajax({键值对});
//使用$.ajax()发送异步请求
$.ajax({
url:"ajaxServlet1111" , // 请求路径
type:"POST" , //请求方式
//data: "username=jack&age=23",//请求参数
data:{"username":"jack","age":23},
success:function (data) {
alert(data);
},//响应成功后的回调函数
error:function () {
alert("出错啦...")
},//表示如果请求响应出现错误,会执行的回调函数
dataType:"text"//设置接受到的响应数据的格式
});
2. $.get():发送get请求
* 语法:$.get(url, [data], [callback], [type])
* 参数:
* url:请求路径
* data:请求参数
* callback:回调函数
* type:响应结果的类型
3. $.post():发送post请求
* 语法:$.post(url, [data], [callback], [type])
* 参数:
* url:请求路径
* data:请求参数
* callback:回调函数
* type:响应结果的类型
JSON
语法请参见菜鸟教程,
JSON数据和Java对象的相互转换
3. JSON数据和Java对象的相互转换
* JSON解析器:
* 常见的解析器:Jsonlib,Gson,fastjson,jackson
1. JSON转为Java对象
1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换
1. readValue(json字符串数据,Class)
2. Java对象转换JSON
1. 使用步骤:
1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换
1. 转换方法:
* writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
* writeValueAsString(obj):将对象转为json字符串
2. 注解:
1. @JsonIgnore:排除属性。
2. @JsonFormat:属性值得格式化
* @JsonFormat(pattern = "yyyy-MM-dd")
3. 复杂java对象转换
1. List:数组
2. Map:对象格式一致
案例
Person类
package com.polo.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.Date;
public class Person {
private String name;
private int age;
private String gender;
// @JsonIgnore表示json转换时忽略该对象值
// @JsonFormat(pattern = "yyyy-MM-dd")表示应用pattern里面的格式要求转换
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", birthday=" + birthday +
'}';
}
}
JSON数据和Java对象的相互转换 测试
package com.polo.test;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.polo.domain.Person;
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
public class Jackson {
public static void main(String[] args) throws Exception {
Jackson jackson = new Jackson();
jackson.test3();
}
//java转json(字符串)
public void test() throws Exception {
Person person = new Person();
person.setAge(11);
person.setName("lqh");
person.setGender("男");
/*
转换方法:
writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
writeValueAsString(obj):将对象转为json字符串
*/
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File("d://3.txt"), person);
mapper.writeValue(new FileWriter("d://b.txt"), person);
String s = mapper.writeValueAsString(person);
System.out.println(s);
}
public void test1() throws Exception {
Person person = new Person();
person.setAge(11);
person.setName("lqh");
person.setGender("男");
person.setBirthday(new Date());
ObjectMapper mapper2 = new ObjectMapper();
String s1 = mapper2.writeValueAsString(person);
System.out.println(s1);
}
public void test2() throws Exception {
HashMap<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("age", 23);
map.put("gender", "男");
map.put("birthday", 19980816);
Person person1 = new Person();
person1.setAge(11);
person1.setName("lqh");
person1.setGender("男");
person1.setBirthday(new Date());
Person person2 = new Person();
person2.setAge(11);
person2.setName("lqh");
person2.setGender("男");
person2.setBirthday(new Date());
Person person3 = new Person();
person3.setAge(11);
person3.setName("lqh");
person3.setGender("男");
person3.setBirthday(new Date());
ArrayList<Person> list = new ArrayList<>();
list.add(person1);
list.add(person2);
list.add(person3);
ObjectMapper mapper = new ObjectMapper();
String s1 = mapper.writeValueAsString(map);
System.out.println(s1);
System.out.println("===================");
String s = mapper.writeValueAsString(list);
System.out.println(s);
}
public void test3() throws Exception {
String json = "{\"birthday\":19980816,\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";
ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(json, Person.class);
System.out.println(person);
}
}