AJAX :
- 概念: 异步的Javascript和XML【Asynchronous Javascript And XML】
-
异步和同步:客户端和服务器端相互通信的基础上
同步:客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。
异步:客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。
Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新,传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面。
提升用户的体验
- 原生js实现ajax:
function func(){
//1,创建核心对象
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//2建立连接
/*
参数:
1,请求方式:GET/POST
2,请求的url
3,true(异步)/ false(同步)
*/
xhttp.open("GET","ajaxServlet?username=zhangsan",true);
//3,发送请求
/*
post方式需要在send里写参数:xhttp.send("username=zhangsan")
*/
xhttp.send();
//4,接收请求
/*
当xhttp的就绪状态发生改变时,触发onreadystatechange事件
*/
xhttp.onreadystatechange=function(){
//发送成功
if(xhttp.status==200 && xhttp.readyState==4){
console.log(xhttp.responseText)//相应结果
}
}
}
-
JQuery实现ajax:
- $.ajax
function func(){ $.ajax({ url:"ajaxServlet", type:"POST", data:{username:"lisi",age:23}, dataType:"text",//指定返回结果(响应数据)数据类型 success:function (res) { console.log(res); } }) }
- $.get& \ $.post
$.post( "ajaxServlet" ,fusername : "rose"} ,function (data) {alert(data); } , "text");
JSON:
-
概念∶javascript对象表示法【Javascript object Notation】
- JSON现在多用于存储和交换文本信息的语法
- 进行数据的传输
- JSON比XML更小、更快,更易解析。
-
语法︰
- 基本规则
json数据是由键值对构成的- 键用引号(单双都行)引起来,也可以不使用引号
- 值的取值类型:
1.数字(整数或浮点数)
2.字符串(在双引号中)
3.逻辑值(true或false)
4.数组(在方括号中){"persons":[0,0]}
5.对象(在花括号中){ "address" : {"province”:"陕西"....}}
6.null - 数据由逗号分隔
- 多个键值对由逗号分隔
- 花括号保存对象:使用{}定义json格式
- 方括号保存数组:[]
- 获取数据:
- json对象.键名
- json对象["键名"]
- 数组对象[索引]
for(var key in person){ //这样的方式获取不行。因为相当于person. "name" //alert(key + ":” + person.key) ; alert(key+" : "+person[ key]); } //获取ps中的所有值 for (var i = o; i < ps.length; i++) { var p = ps[i]; for(var key in p){ alert(key+" : "+p[ key]); } }
- 基本规则
-
JSON数据和java对象的相互转换︰
*常见的解析器:jsonlib,Gson,fastjson,jackson-
JSON转为]ava对象
Person person = mapper.readValue(json,Person.class);
//演示了JSON字符串转为Java对象 @Test public void test5() throws Exception { //1.初始化JSON字符串 string json = {\"gender\":\"男\", \ "name\":\ "张三\", \ "age\ ":23}"; //2.创建objectMapper对象 objectMapper mapper = new.ObjectMapper( );//3.转换为Java对象 Person对象 Person person = mapper.readValue(json,Person.class); System.out.println(person); }
Java对象转换JSON:
1.导入jackson的相关jar包
2.创建jackson核心对象objectMapper
3.调用objectMapper的相关方法进行转换
-
public void test01() throws Exception {
Persion p = new Persion();
p.setName("张三");
p.setAge(22);
p.setGender("男");
//创建jackson对象
ObjectMapper mapper = new ObjectMapper();
/*
转换方法:
writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
writeValueAsString(obj):将对象转为json字符串
*/
//转换成json对象
String jsonStr = mapper.writeValueAsString(p);
System.out.println(jsonStr);
//将json写到d://a.txt文件中
mapper.writeValue(new File("d://a.txt"),p);
//将数据关联到Writer中
mapper.writeValue(new FileWriter("d://b.txt"),p);
}
在实体类中的属性或者get set方法上使用注解可在转化成json时可忽略或格式化实体类的属性。
@JsonIgnore //忽略该属性
@JsonFormat(pattern = "yyyy-MM-dd")格式化属性值
@Test
public void test02() throws Exception {
Persion p = new Persion();
p.setName("张三");
p.setAge(22);
p.setGender("男");
p.setBirthday ( new Date());
//可以在Persion类中使用注解:
//@JsonIgnore//忽略该属性
//@JsonFormat(pattern = "yyyy-MM-dd")格式化属性值
ObjectMapper mapper = new ObjectMapper();
String jsonstr = mapper.writevalueAsString(p);System.out.println(jsonstr);
}
复杂java对象转换
1.List :数组
2.Map :对象格式一致