Java之Ajax技术

ajax(asynchronouse javascript and xml) 异步的javascript 和 xml(如今常把xml换成json):javascript

ajax是2005年提出的,在2006,2007年迅速的发展,目前不少网站都使用了ajax技术,在招聘软件工程师时,ajax技术是必需要求掌握的。ajax技术包含了几种技术:javascript、xml、css、xstl、dom、xhtml和XMLHttpRequest七种技术,因此ajax就像是粘合剂把七种技术整合到一块儿,从而发挥各个技术的优点,威力惊人。[新瓶装旧酒,组合拳]ajax是一个与服务端语言无关的技术. 便可以使用在(php/java ee/.net网站/ asp)ajax能够给客户端返回三种格式数据(文本格式 ,xml , json格式)php

为何ajax会如此流行,必然有它的道理。ajax技术解决了不少其它技术解决不了的问题,好比:css

(1)页面无刷新的动态数据交换html

(2)局部刷新页面【验证用户名惟一】java

(3)界面的美观  【加强用户体验】node

(4)对数据库的操做web

(5)能够返回简单的文本格式,也能够返回 xml文件格式, json数据格式ajax

ajax技术的意义:数据库

互联网的链接是不稳定,谁也不肯意看着本身的电脑从服务器一点一滴的下载数据,那么,ajax是否是解决了这个问题呢,说实话,与其说ajax解决了这个问题,倒不如它只是掩盖了这个问题,它只是在服务器和客户端之间充当了一个缓冲器,让用户误觉得服务没有中断。精确的说,ajax并不能提升从服务器端下载数据的速度,而只是使这个等待不那么使人沮丧。可是正是这一点就足以产生巨大的影响和震动,它实际上也对桌面软件产生了巨大的冲击。编程

ajax在什么地方用的多

1 动态加载数据,按需取得数据。【树形菜单、联动菜单…/省市联动】

2 改善用户体验。【输入内容前提示、带进度条文件上传…】

3 电子商务应用。 【购物车、邮件订阅…】

4 访问第三方服务。 【访问搜索服务、rss阅读器】

ajax 的运行原理分析:

ajax1

Ajax原理图

PS:最重要的就是要弄透这四道线,其中4号线须要一个回调函数来实现。

Ajax的原理简单来讲经过XmlHttpRequest对象来向服务器发异步请求,从服务器得到数据,而后用javascript来操做DOM而更新页面。这其中最关键的一步就是从服务器得到请求数据。要清楚这个过程和原理,咱们必须对 XMLHttpRequest有所了解。XMLHttpRequest是ajax的核心机制,它是在IE5中首先引入的,是一种支持异步请求的技术。简单的说,也就是javascript能够及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。

     咱们先来看看XMLHttpRequest这个对象的属性。

它的属性有:

onreadystatechange  每次状态改变所触发事件的事件处理程序。

responseText     从服务器进程返回数据的字符串形式。

responseXML    从服务器进程返回的DOM兼容的文档数据对象(document)。

status           从服务器返回的数字代码,好比常见的404(未找到)和200(已就绪)

status Text       伴随状态码的字符串信息

 readyState       对象状态值

0 (未初始化) 对象已创建,可是还没有初始化(还没有调用open方法)

1 (初始化) 对象已创建,还没有调用send方法

2 (发送数据) send方法已调用,可是当前的状态及http头未知

3 (数据传送中) 已接收部分数据,由于响应及http头不全,这时经过responseBody和responseText获取部分数据会出现错误,

4 (完成) 数据接收完毕,此时能够经过经过responseXml和responseText获取完整的回应数据

  1. 数据的布局刷新

使用ajax与服务器通讯的的步骤

建立一个XMLHttpRequest对象(第一道线)

不一样的浏览器建立 XMLHttpRequest 对象的方法是有差别的.咱们使用js 的try..catch..

建立url,data,经过 send(),发送请求。(第二道线)

服务器端接收 ajax的请求,作相应处理(操做数据库),而后返回结果。(第三道线)

客户端经过xmlHttpRequest的属性 reponseText , responseXML 取的数据,而后就完成局部刷新当前页面任务。(第四道线)

经典案例:

■ ajax经典案例—无刷新验证用户名

在用户注册时:

1 传统的方法是把用户填写的全部信息都提交到服务器,若是用户名重复,就会出异常。

2 若是使用ajax咱们能够只提交用户名,确认用户名是否存在,再让用户点击注册。

 

配置文件(仅使用了servlet):

服务端:

客户端请求页面:

响应结果图:

ajax3

PS:使用get方式发出请求,若是提交的用户名不变化,浏览器将不会真的发请求,而是缓存取数据., url解决方法 

  1. url 后带一个老是变化的参数,好比当前时间

 

 

  1. 在服务器回送结果时,禁用缓存.

//这里两句话很重要,第一讲话告诉浏览器返回的数据是xml格式

header(“Content-Type: text/xml;charset=utf-8”);

//告诉浏览器不要缓存数据

header(“Cache-Control: no-cache”);

AJAX 能够在php项目,java ee项目,.net项目使用。在服务器端的业务逻辑层使用何种服务器端语言均可以。

从服务器端接收数据的时候,那些数据必须以浏览器可以理解的格式来发送。服务器端的编程语言通常以以下 3 种格式返回数据:Text(又称Html格式)、XML、JSON。

返回Html格式

HTML 由一些普通文本组成。若是服务器经过 XMLHttpRequest 发送 HTML, 文本将存储在 responseText 属性中。

没必要从 responseText 属性中读取数据。它已是但愿的格式,能够直接将它插入到页面中。

插入 HTML 代码最简单的方法是更新这个元素的 innerHTML 属性。

innerHTML 并不是 DOM 标准。

 

■ 返回xml格式优势:

XML 是一种通用的数据格式。没必要把数据强加到已定义好的格式中,而是要为数据自定义合适的标记。利用 DOM 能够彻底掌控文档。

缺点:若是文档来自于服务器,就必须得保证文档含有正确的首部信息。若文档类型不正确,那么 responseXML 的值将是空的。当浏览器接收到长的 XML 文件后, DOM 解析可能会很复杂

PS:不论是返回的何种类型,影响的只是三四号线

上面的那个例子即是返回了text格式,如今仍是拿上面那个例子返回xml 格式:

返回JSON格式:(推荐)

JSON 只是一种文本字符串。它被存储在 responseText 属性中。为了读取存储在 responseText 属性中的 JSON 数据,须要根据 JavaScript 的 eval 语句。函数 eval 会把一个字符串看成它的参数。而后这个字符串会被看成 JavaScript 代码来执行。由于 JSON 的字符串就是由 JavaScript 代码构成的,因此它自己是可执行的

 

小结:

当一个ajax请求到服务器,服务器能够根据需求返回 三种格式的数据,那么咱们应当选择哪个?

  1. 若是你的项目经理没有特殊的要求,建议使用json
  2. 若应用程序不须要与其余应用程序共享数据的时候, 使用 HTML 片断来返回数据时最简单的
  3. 若是数据须要重用, JSON 文件是个不错的选择, 其在性能和文件大小方面有优点
  4. 当远程应用程序未知时, XML 文档是首选, 由于 XML 是 web 服务领域的 “世界语”

■ ajax经典案例—省市联动

ajax一个最重要的用途就是,动态的从服务器取须要的数据,并在页面无刷新的显示,咱们来看一个经典的用法:省市联动菜单:

1 传统的b/s中,显示省市联动菜单是一次性把数据所有取出,并在客户端显示,这样作数据传输量大,不灵活。

2 使用ajax技术,能够根据用户需求从服务器取数据,当用户点击某个按钮时,才从服务器取数据并显示,灵活。让学生从数据库取出数据,县城级别联动作出.

ajax的省市联动案例(如何动态的从服务器取得数据),这里只贴了一部分代码:

PS:服务器不可能主动给客户端发消息,拿手机收到短信举例,实际上是手机上有一个发射器,它会在规定时间内如2秒定时去服务器上的数据库中查找是否有本身未接收的短信,若是有就接收到。

相关文章
相关标签/搜索