看看如何在Struts应用中施展AJAX魔法

2008-02-23 08:09:00来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

AJAX是最近在web开发流程中一次革命,它允许在一个普通的web浏览器中配置大量的动态效果。多年前Struts 都已经是Java-Web开发中的一个事实上的标准,在大量的应用中都已经使用了它。本文将告诉你,如何在你已经存在Struts应用中结合丰富的AJAX没Ы涌凇?

本文将介绍在JSP页面中包含一些JavaScript这样一个简单而有效的方法来结合AJAX和Struts。在此我们介绍如何重新使用已经存在的Struts actions,但此技术同样可用于你选择的其他Java-Web 框架。本方法同样可平移到Struts或者JSF的下一个版本。

版权声明:任何获得授权的网站,转载时请务必保留以下作者信息和链接

作者:Paul Browne;pawenwen(作者的blog:http://blog.matrix.org.cn/page/pawenwen)

关键字:Struts;AJAX

什么是AJAX?

AJAX是“异步的JavaScript和XML”的缩写。这是一项技术,而不是一个如Struts一样的框架。为什么在AJAX周围会有这么多的关注呢?这是因为AJAX使web页面看起来并不像一个平面的文档,而更像用户所期望的如桌面应用的动态GUI应用程序。AJAX技术能在很多的浏览器上使用(包括IE和Netscape/Mozilla)。它已经为Microsoft(用于Outlook的web客户端)和Google(用户Google Maps和Gmail)所使用。

未使用AJAX之前

目前大多数的Struts应用都是标准的“如同一个平面文档的web页面”的结构。如果你想模仿一些桌面应用程序(比如那些使用Java Swing,Visual Basic,或者Delphi建立的应用程序),那么你有两个选择:你可以发送所有的可能作为页面的一部分被请求的信息,使用大量的JavaScript来操作其动态的显示(一个很慢并且非企业级Java的方法);或者你可以不改变形式地提交到后台服务器(一种有效的方法) 。AJAX提高给你了融合前面的最佳解决方案:动态的页面,但是大多数的应用是在你的web服务器的Java程序来处理的。

AJAX 101

AJAX和现有的动态HTML技术非常相似,并在其上增加了一个发送到“后台”服务器的请求来获取需要的新的或者更新的信息。AJAX的机制在其他地方已经有详细的说明――请查看本文后的Resources来获取更多。但是你至少需要知道:

1. XMLHttpRequest (如果你使用的是IE浏览器的话,则是Microsoft.XMLHTTP的ActiveX的对象)。这些对象,你可以在web页面中使用JavaScript调用。他们允许你作为后台的调用方式来请求web服务器的内容(例如,在表单提交后,屏幕并不像平时一样显示“空白”)。

2. XMLHttpRequest 和Microsoft.XMLHTTP 返回的内容可以作为XML或者文本来处理。JavaScript(在你页面上的)可以使用请求的新内容来更新页面。

3. 整个处理过程可以由普通的JavaScript事件来触发:onclick,onchange,onblur,等。

在你的Struts应用中使用AJAX

你阅读了本文,然后你会对使用AJAX来创建动态的web页面感兴趣,并且想知道如何将它加入到你的Struts应用中。这只是选择之一。那么你会如何选择呢?

· 等待,知道Struts的下一个版本融合了AJAX技术。如果Struts开发者准备开发一个新的应用,这或许会是一个好的选择。再后面,可能会是要求JSF也这样做――对其本身并不一件坏事,但是对于已经存在的系统这将会带来最根本的改变。

· 你也可以直接采用新的方法,比如Direct Web Remoting (DWR) 和Ruby on Rails,这些都是专为建立AJAX应用的。如果你考虑不使用Struts来开发web的话,那么这些都是很又用的框架,并且值得一试。但是,这也同时意味着你必须要重写你的应用。

· 在你已经存在的Struts应用中增加AJAX。既然AJAX只是一项技术而并非框架,那么它就很容易融入到Struts中。作为现有的系统,其稳定性(如,保持现有的库文件)是相当重要的。所以这个方法被推荐,并且我们将在后面详细介绍。

我们选择在Struts应用中增加AJAX的优势是:

1. 它并不需要任何新的库文件或者服务器代码;只需要使用现有的Struts库文件和action。

2. 解决方案中所有部分――JavaScript,XML,Java和Struts――早已为广泛所知。

3. 此应用可以一块一块地移植到AJAX;我们可以确定哪些部分对用户有益,并首先将它们更新到动态AJAX显示。

实现方案

我们如何真正的贯彻我们的选择呢?我们首先应该注意一个“标准的”(没有AJAX)Struts应用是如何工作的。在此应用中,一个一般的事件流程如下:

1. 使用点击超链接或者表单的提交按钮,用户发送请求。

2. web服务器运行处理请求的Struts Action来生成一个web页面。

3. 浏览器显示web页面。

4. 当用户点击保存的时候,信息由Struts框架中一个ActionForm类来转换并发送到服务器。

5. 然后,Struts框架调用Struts Action来出来请求(如,保存数据到数据库中)。

6. 页面再一次回传,处理流程继续。

现有的Struts应用

一个演示事件流程的简单Struts应用可以在以下地址下载: struts-non-ajax.zip。此基于Struts的应用,是基于用户的输入显示或者隐藏蓝色和绿色的表格。图1显示了载入初始页面的画面。图2显示了用户输入值并点击了提交后的画面。虽然简单,但它已经足以表示一个Struts的工作流程。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Java 理论与实践: 良好的内务处理实践

下一篇:使用AJAX和J2EE创建瘦客户端