AJAX简介

ajax简介

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
AJAX = 异步 JavaScript 和 XML。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

教程

1. ajax是什么?

*asynchronous javascript and xml:异步的js和xml
*它能使用js访问服务器,而且是异步访问!
*服务器给客户端的响应一般是整个页面,一个html完整页面!但在ajax中因为是局部刷新,那么服务器就不用再响应整个页面!而只是数据!
< text:纯文本
< xml:大家都熟悉!!!
< json:它是js提供的数据交互格式,它在ajax中最受欢迎!
java跟js都认识的称为数据交换格式

AJAX执行程序
AJAX简介


2. 异步交互和同步交互

*同步:
< 发一个请求,就要等待服务器的响应结束,然后才能发第二个请求!中间这段时间就是一个字“卡”
< 刷新的是整个页面!
*异步:
< 发一个请求后,无需等待服务器的响应,然后就可以发第二个请求!
< 可以使用js接收服务器的响应,然后使用js来局部刷新!

图解
AJAX简介


3. ajax应用场景(异步交互,增强用户体验)

*百度的搜索框
*用户注册时(校验用户名是否被注册过)


4. ajax的优缺点

优点:
*异步交互:增强了用户的体验!
*性能:因为服务器无需再响应整个页面,只需要响应部份内容,所以服务器的压力减轻了!
缺点:
*ajax不能应用在所有场景!
*ajax无端的增多了对服务器的访问次数,给服务器带来了压力!


5.打开与服务器的连接

*xmlHttp.open():用来打开与服务器的连接,它需要三个参数:
< 请求方式:可以是GET或POST
< 请求的URL:指定服务器端资源,例如;/day23_1/AServlet
< 请求是否为异步:如果为true表示发送异步请求,否则同步请求!
*xmlHttp.open(“GET”, “/day23_1/AServlet”, true);


6.发送请求

*xmlHttp.send(null):如果不给可能会造成部份浏览器无法发送!
< 参数:就是请求体内容!如果是GET请求,必须给出null。


7.响应

*在xmlHttp对象的一个事件上注册监听器:onreadystatechange
*xmlHttp对象一共有5个状态:
< 0状态:刚创建,还没有调用open()方法;
< 1状态:请求开始:调用了open()方法,但还没有调用send()方法
< 2状态:调用完了send()方法了;
< 3状态:服务器已经开始响应,但不表示响应结束了!
< 4状态:服务器响应结束!(通常我们只关心这个状态!!!)

*得到xmlHttp对象的状态:
< var state = xmlHttp.readyState;//可能是0、1、2、3、4

*得到服务器响应的状态码
< var status = xmlHttp.status;//例如为200、404、500

*得到服务器响应的内容1
< var content = xmlHttp.responseText;//得到服务器的响应的文本格式的内容
< var content = xmlHttp.responseXML;//得到服务器的响应的xml响应的内容,它是Document对象了!

xmlHttp.onreadystatechange = function() {//xmlHttp的5种状态都会调用本方法
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {//双重判断:判断是否为4状态,而且还要判断是否为200
// 获取服务器的响应内容
var text = xmlHttp.responseText;1
}
};


8.XStream

  1. 什么作用
    *可以把JavaBean转换为(序列化为)xml
  2. XStream的jar包
    *核心JAR包:xstream-1.4.7.jar;
    *必须依赖包:xpp3_min-1.1.4c(XML Pull Parser,一款速度很快的XML解析器);
  3. 使用步骤
    *XStream xstream = new XStream();
    *String xmlStr = xstream.toXML(javabean);
  4. 使用细节
    *别名:把类型对应的元素名修改了
    < xstream.alias(“china”, List.class):让List类型生成的元素名为china
    < xstream.alias(“province”, Province.class):让Province类型生成的元素名为province
    *使用为属性:默认类的成员,生成的是元素的子元素!我们希望让类的成员生成元素的属性
    < xstream.useAttributeFor(Province.class, “name”):把Province类的名为name成员,生成<province>元素的name属性
    *去除Collection类型的成名:我们只需要Collection的内容,而不希望Collection本身也生成一个元素
    <xstream.addImplicitCollection(Province.class, “cities”):让Province类的名为cities(它是List类型的,它的内容还会生成元素)的成名不生成元素
    *去除类的指定成名,让其不生成xml元素
    < xstream.omitField(City.class, “description”):在生成的xml中不会出现City类的名为description的对应的元素!


9.JSON

  1. json是什么
    *它是js提供的一种数据交换格式!
  2. json的语法
    *{}:是对象!
    < 属性名必须使用双引号括起来!单引不行!!!
    < 属性值:
    *null
    *数值
    *字符串
    *数组:使用[]括起来
    *boolean值:true和false
  3. 应用json
    *var person = {“name”:”zhangSan”, “age”:18, “sex”:”male”};
  4. json与xml比较
    *可读性:XML胜出
    *解析难度:JSON本身就是JS对象(主场作战),所以简单很多
    *流行度:XML已经流行好多年,但在AJAX领域,JSON更受欢迎。

json-lib

  1. 是什么?
    *它可以把javabean转换成json串
  2. jar包
    *略
  3. 核心类
    *JSONObject –> Map
    < toString();
    < JSONObject map = JSONObject.fromObject(person):把对象转换成JSONObject对象
    *JSONArray –> List
    < toString()
    < JSONArray jsonArray = JSONObject.fromObject(list):把list转换成JSONArray对象