AJAX 和JSON
AJAX概念:ASynchronous javascript and xml 异步的javascript和xml
异步和同步:客户端和服务器端相互通信的基础上
同步:客户端必须等待服务器的响应,在等待的期间客户不能做其他操作
异步:客户端不需要等待服务器的响应,在服务器处理请求的过程中,客户端可以进行其他操作
AJAX:是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
实现方式:
原生的JS实现方式
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
注意:open(method,url,async)
规定请求的类型、URL 以及是否异步处理请求。
method:请求的类型;GET 或 POST
url:文件在服务器上的位置
async:true(异步)或 false(同步)
注意:send(string)
将请求发送到服务器。
string:仅用于 POST 请求
获取服务器响应
responseText 获得字符串形式的响应数据。
responseXML 获得 XML 形式的响应数据
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("myDiv").innerHTML=txt;
JQuery实现方式
1.$.ajax(),
$.ajax({
url:“abd”,(请求的路径)
type:“post”,(请求方式)
data:(“s”:b,“c”:“cc”),(这里就是键值对)
success:function(data){
alert(“data”)
}
})
datatype:“text”(设置接受数据的格式)
2.$.get():发送get请求
语法:$.get(url,[data],[callback],[type])
url 请求路径
data 请求参数
callback 回调函数
type 响应结果的类型
3.$.post():发送post请求,类似
JSON
概念:javascript object notation javascript对象表示法
如:
person p=new persion();
p.setname(“xxxx”);
p.setage(12);
var p={“name”:“sssss”,“age”:121}
概念:JavaScript 对象表示法,是存储和交换文本信息的语法。类似 XML,比 XML 更小、更快,更易解析。
语法:
JSON 语法是 JavaScript 对象表示法语法的子集。
-
数据在名称/值对中:
数据由键值对构成,建用引号(单或双),也可以不用
值得取值类型:
数字,字符串,逻辑值
数组(在方括号中):
"employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ]
对象(在花括号中)如:
var person={ "firstName":"John" , "lastName":"Doe" }
null
-
数据由逗号分隔
-
花括号保存对象
-
方括号保存数组
基本定义模式:
var person={ “firstName”:“John” , “lastName”:“Doe” }
嵌套格式
var person={"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]}
获取数据:
json对象.键名,json对象[“键名”],数组对象[索引]
当服务器端拿到json对象要进行转换json->java,要将数据发给客户端时将java对象转成json对象
json解析器:jsonlib,gson,fastjson,jackson
-
JSON转成java对象
-
Java转成json对象
使用步骤:
导入解析器的jar包
创建解析器对象
调用对象相关方法
比如:Jackson的核心对象
ObjectMapper =new ObjectMapper();
writeValue(参数1,obj)
参数1:file:将obj对象转换未json字符串,并保存到指定的文件中
writer:将obj对象转换成json字符串,将json数据填充到字符输出流
outputstream:将obj对象转换成json字符串,将json数据填充到字节输出流
writevalueasstring(obj):将对象转为json字符串
注解:
当你不想把对象里面的属性转换时就需要用到@JsonIgnore来忽略属性
当你相对相关属性进行格式化时@Jsonformat()
复杂java对象转换
list:数组
map:对象
Json字符串转为java对象
String json="{“gender”,“男”}"
ObjectMapper mapper=new ObjectMapper();
Person person=mapper.readvalue(json,Person.class);