枫林在线论坛精华区>>技术交流
[382552] 主题: Ajax铺设了更好的开发Web应用的道路(1)
作者: leaflet (Leaflet)
标题: Ajax铺设了更好的开发Web应用的道路(1)[转载]
来自: 192.168.*.*
发贴时间: 2005年12月17日 11:12:38
长度: 3224字
http://searchwebservices.techtarget.com.cn/tips/212/2179212.shtm


Ajax铺设了更好的开发Web应用的道路

【2005-11-03 11:17】【】【赛迪网】  

页面重载提出了一个在Web应用开发中最大的可用性障碍,对于Java开发来
说也是一个重
大的挑战。在本文中,作者Philip McCarthy介绍了通过后台通道的方法来
创建动态Web
应用的经验。

  Ajax(Asynchronous JavaScript and XML)是一个结合了Java技术、X
ML、以及JavaS
cript的编程技术,可以让你构建基于Java技术的Web应用,并打破了使用
页面重载的惯
例。

  Ajax,异步JavaScript与XML,是使用客户端脚本与Web服务器交换数
据的Web应用开
发方法。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更
新。使用Ajax
,你可以创建接近本地桌面应用的,直接的、高可用的、更丰富的、更动
态的Web用户接
口界面。

  Ajax不是一个技术,它更像是一个模式—标志并描述有用的设计技巧
的一种方法。
对于刚了解它的许多开发人员来说,它是一种新的感觉,但是实现Ajax的
所有组件都已
存在了许多年。

  当前的热闹是因为在2004与2005年出现了一些基于Ajax的非常动态的
WebUI,尤其是
Google的GMail与Maps应用系统、与照片共享网站Flickr。这些UI充分地使
用了后台通道
,也被一些开发者称为“Web 2.0”,并导致了大家对Ajax应用兴趣的猛涨


  在本系列中,我将给出所有你需要的开发你自己的Ajax应用的工具。
在这第一篇文
章中,我将解释在Ajax背后的概念,示范为基于Web的应用系统创建一个A
jax接口的基本
步骤。我将使用示例代码来示范实现Ajax动态接口的服务器端Java代码与
客户端JavaScr
ipt脚本。最后,我将指出一些Ajax方法中易犯的错误,以及在创建Ajax应
用时应该考虑
的广泛范围内的可用性与易访问性方面的问题。

  一个更好的购物车

  你可以使用Ajax来加强传统的Web应用,通过消除页面载入来使交互更
流畅。为了示
范它,我将使用一个简单的,能动态更新加入的物品购物车。结合一个在
线商店,这个
方法可以不用等待点击后的页面重载,而让我们继续浏览并挑选物品到购
物车中。

  虽然,本文中的代码针对购物车例子,但其中展示的技术可以用到其
它的Ajax应用
中。列表1中展示了购物车示例所使用的HTML代码。在整篇文章中,我都将
会引用到这些
HTML代码。

  Ajax处理过程

  一个Ajax交互从一个称为XMLHttpRequest的JavaScript对象开始。如
同名字所暗示
的,它允许一个客户端脚本来执行HTTP请求,并且将会解析一个XML格式的
服务器响应。
Ajax处理过程中的第一步是创建一个XMLHttpRequest实例。使用HTTP方法
(GET或POST)来
处理请求,并将目标URL设置到XMLHttpRequest对象上。

  现在,记住Ajax如何首先处于异步处理状态?当你发送HTTP请求,你不
希望浏览器挂
起并等待服务器的响应,取而代之的是,你希望通过页面继续响应用户的
界面交互,并
在服务器响应真正到达后处理它们。

  要完成它,你可以向XMLHttpRequest注册一个回调函数,并异步地派
发XMLHttpRequ
est请求。控制权马上就被返回到浏览器,当服务器响应到达时,回调函数
将会被调用。

  在Java Web服务器上,到达的请求与任何其它HttpServletRequest一
样。在解析请
求参数后,servlet执行必需的应用逻辑,将响应序列化到XML中,并将它
写回HttpServl
etResponse。

  回到客户端,注册在XMLHttpRequest上的回调函数现在会被调用来处
理由服务器返
回的XML文档。最后,通过更新用户界面来响应服务器传输过来数据,使用
JavaScript来
操纵页面的HTML DOM。图1是Ajax处理过程的一个时序图。



  图1:Ajax处理过程

  现在,你应该对Ajax处理过程有了一个高层视图。我将进入其中的每
一步看看更细
节的内容。如果你找不到自己的位置时,就回头再看看图1,加—因为Aja
x方法的异步本
质,所以时序图并不是笔直向前的。
========== * * * * * ==========
返回