AjaxStruts

作者:struts开发组   翻译: tianxinet(胖猴)
(本文介绍了ajax的基本工作原理,提供了一些在struts中及单独使用ajax的非常有用的资源。)
介绍
本文介绍怎样在struts中使用AJAX
基础
作为开始,这里有一篇文章和一个相当有趣的web程序的例子,下面是链接(如果有兴趣可以看一下,或看完本文后去看,它有具体的struts+ajax的应用文章和示例。可以把本文当作引子):
这里的文章介绍了一些不错的关于使用XMLHttpRequest的信息,并且对web程序的例子作了一些解释。
这个web实例程序演示了XMLHttpRequest的6种不同用法,包括table的动态排序,动态更新一个<select>元素,动态装载一个<textarea>RSS解析器等。
这儿有一些图表可以帮助你了解AJAX怎样工作:
传统web应用模式(左)与Ajax应用模式(右)的比较。
 
传统web应用的同步模式与Ajax应用异步模式的比较。 
记住AJAX不是特殊的技术实现是很重要的,它是一种途径、一种技巧、一种考虑事情的方法。它是一种普遍认同的使用XMLHttpRequest发送和接收XML的方法,但不是唯一的方法。你根本不应该有这种印象:你不得不处理XML或你不得不使用XMLHttpRequest对象。
说到底,AJAX request和其他HTTP request没有区别。记住这一点,可以很容易的看到任何AJAX库将和Struts一起工作的很好。真正的不同是和request一起提交的东西,它可能就是一个request参数的集合,在这种情况下你象往常那样书写struts代码,代码不会有区别;也可能是POST body中的XML;也可能是JSON(译者注:JavaScript Object Notation,一种轻量级数据交换格式,在此向大家推荐,不错的东东),看起来象这样:
{ "firstName":"Frank","lastName":"Zammetti" }
server端解析它是相当微不足道的,甚至在client端解析也是很容易的。
eval("json = (" + INPUT_JSON + ")");
假定 INPUT_JSON 是上面展示的 JSON数据,你可能访问一个名叫jsonjavascript变量--从你能够得到的一段数据中,象这样:
var firstName = json.firstName;
var lastName = json.lastName;
这很简单,尤其是在client(解析XML是很小的开销)变得很流行。关于JSON的更多信息,包括大量很容易能解析和创建JSONjava类,见http://www.json.org
但是,要点是如果request提交的东西是XMLJSON,或其它你自己创建的数据格式,那么你不得不在sever上解析并处理它,这意味着你不能使用Struts的所有能力,比如auto-population, validation等。
有几百种AJAX库,或是XMLHttpRequest之上的抽象层、或是AJAX-enabled的窗口部件或者其他的东西,所有库都将和Struts一起工作。这有一些或许是最流行的库的信息:
*AjaxParts标签库APT),APT之美在于它是完全开放的,就像Struts一样。不像其他AJAX库,APTJava-only的,因为它使用自定义标签库来工作。你简单的拖一个标签到页面上,给页面上的一个元素绑定一个AJAX事件,通过一个XML配置文件定义事件怎样工作,就这样简单。不需要写任何javascript代码。APT是强大的,包含了大多数最常用的AJAX功能。如果你需要更多的功能,APT是完全可扩展的,允许你作任何想做的事。Rick Reumann写了一篇非常好的关于怎样在struts中使用APT的文章:http://www.learntechnology.net/struts-ajax-crud.do (注意APT 通常被叫做 AjaxTags)
 *Java Web PartsJWP),APT外,JWP提供一些有趣的东西。一个是Commons Digesterjavascript实现,它不具备Commons Digester的所有功能,但是如果你从server端发送XML,它可能是值得考虑的。也要注意RequestHelpers类,它提供一些有用的功能,象getPostBody()可以字符串格式得到request body的内容(比如当你从client端发送XMLJSON格式数据的时候这是很不错的)。
* PrototypePrototype是一个非常有用的javascript库,它可以比java作更多的事。
* Dojo, Dojo正迅速成为最令人激动的的javascript库。类似Prototype,它不仅仅处理AJAX,而是更多的东西。它包含大量GUI部件、功能类去处理client端的持久存储,DOM操作函数、javascript集合实现,以及非常可靠的AJAX功能。
* DWRDWR是一个非常酷的库,它允许你从javascript中远程方法调用server上的对象,并且代码看起来就像用java中写的一样!它也可以和许多流行的框架集成,包括struts,JSF,Spring,Webwork以及其它。
* Scriptaculous, 这个库在你往页面上添加不同效果时特别好用,它也提供一些方便的javascript单元测试代码。
*AjaxTags, 注意这和前面提及的AjaxParts是不同的(尽管APT常也被叫做AjaxTags)。这个AjaxTags是另一个标签库,它提供更多的AJAX部件,它使你通过标签很容易的作许多AJAX类的事情。尽管听起来是相似的,但AjaxTagsAPT确实是非常不同。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值