作者:struts开发组 翻译:tianxinet(胖猴)
(本文介绍了ajax的基本工作原理,提供了一些在struts中及单独使用ajax的非常有用的资源。)
介绍
本文介绍怎样在struts中使用AJAX。
基础
作为开始,这里有一篇文章和一个相当有趣的web程序的例子,下面是链接(如果有兴趣可以看一下,或看完本文后去看,它有具体的struts+ajax的应用文章和示例。可以把本文当作引子):
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_s1030" style="WIDTH: 8.25pt; HEIGHT: 8.25pt" o:button="t" href="http://www.omnytex.com/articles" alt="[WWW]" type="#_x0000_t75"><v:imagedata o:href="http://wiki.apache.org/wiki/modern/img/moin-www.png" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>http://www.omnytex.com/articles
这里的文章介绍了一些不错的关于使用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数据,你可能访问一个名叫json的javascript变量--从你能够得到的一段数据中,象这样:
var firstName = json.firstName;
var lastName = json.lastName;
这很简单,尤其是在client端(解析XML是很小的开销)变得很流行。关于JSON的更多信息,包括大量很容易能解析和创建JSON的java类,见<v:shape id="_x0000_s1031" style="WIDTH: 8.25pt; HEIGHT: 8.25pt" o:button="t" href="http://www.json.org/" alt="[WWW]" type="#_x0000_t75"> <v:imagedata o:href="http://wiki.apache.org/wiki/modern/img/moin-www.png" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>http://www.json.org
但是,要点是如果request提交的东西是XML、JSON,或其它你自己创建的数据格式,那么你不得不在sever上解析并处理它,这意味着你不能使用Struts的所有能力,比如auto-population, validation等。
库
有几百种AJAX库,或是XMLHttpRequest之上的抽象层、或是AJAX-enabled的窗口部件或者其他的东西,所有库都将和Struts一起工作。这有一些或许是最流行的库的信息:
*AjaxParts标签库(APT),APT之美在于它是完全开放的,就像Struts一样。不像其他AJAX库,APT是Java-only的,因为它使用自定义标签库来工作。你简单的拖一个标签到页面上,给页面上的一个元素绑定一个AJAX事件,通过一个XML配置文件定义事件怎样工作,就这样简单。不需要写任何javascript代码。APT是强大的,包含了大多数最常用的AJAX功能。如果你需要更多的功能,APT是完全可扩展的,允许你作任何想做的事。Rick Reumann写了一篇非常好的关于怎样在struts中使用APT的文章:<v:shape id="_x0000_s1032" style="WIDTH: 8.25pt; HEIGHT: 8.25pt" o:button="t" href="http://www.learntechnology.net/struts-ajax-crud.do" alt="[WWW]" type="#_x0000_t75"> <v:imagedata o:href="http://wiki.apache.org/wiki/modern/img/moin-www.png" src="file:///C:\DOCUME~1\chenyong\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>http://www.learntechnology.net/struts-ajax-crud.do (注意APT 通常被叫做 AjaxTags)
*Java Web Parts(JWP),除APT外,JWP提供一些有趣的东西。一个是Commons Digester的javascript实现,它不具备Commons Digester的所有功能,但是如果你从server端发送XML,它可能是值得考虑的。也要注意RequestHelpers类,它提供一些有用的功能,象getPostBody()可以字符串格式得到request body的内容(比如当你从client端发送XML或JSON格式数据的时候这是很不错的)。
* Prototype,Prototype是一个非常有用的javascript库,它可以比java作更多的事。
* Dojo, Dojo正迅速成为最令人激动的的javascript库。类似Prototype,它不仅仅处理AJAX,而是更多的东西。它包含大量GUI部件、功能类去处理client端的持久存储,DOM操作函数、javascript集合实现,以及非常可靠的AJAX功能。
* DWR,DWR是一个非常酷的库,它允许你从javascript中远程方法调用server上的对象,并且代码看起来就像用java中写的一样!它也可以和许多流行的框架集成,包括struts,JSF,Spring,Webwork以及其它。
* Scriptaculous, 这个库在你往页面上添加不同效果时特别好用,它也提供一些方便的javascript单元测试代码。
*AjaxTags, 注意这和前面提及的AjaxParts是不同的(尽管APT经常也被叫做AjaxTags)。这个AjaxTags是另一个标签库,它提供更多的AJAX部件,它使你通过标签很容易的作许多AJAX类的事情。尽管听起来是相似的,但AjaxTags和APT确实是非常不同。
更多信息见:http://wiki.apache.org/struts/AjaxStruts
分享到:
相关推荐
Ajax struts2 xml flex Ajax struts2 xml flex Ajax struts2 xml flex Ajax struts2 xml flex Ajax struts2 xml flex Ajax struts2 xml flex
开发者可以通过解压这个rar文件,查看和学习如何在Struts应用中使用Ajax技术。 总的来说,这个项目提供了一个实战性的例子,展示了如何在Struts框架下利用Ajax实现Web应用的异步交互。开发者可以从中学到如何配置...
在Struts2中实现Ajax交互,通常需要依赖一些特定的库和插件。以下是对"ajax-struts2需要的3个包"的详细解释: 1. **json.js**: 这是一个JavaScript库,用于处理JSON(JavaScript Object Notation)数据格式。JSON...
在Struts2中,Jquery可以与Ajax结合使用,实现页面的无刷新更新。 Ajax(Asynchronous JavaScript and XML)技术允许前端与后台进行异步通信,无需整个页面刷新,提高了用户体验。在Struts2框架下,我们可以使用...
在Struts2中使用Ajax,可以实现页面的部分更新,提高用户体验,而无需每次操作都刷新整个页面。下面将详细介绍如何在Struts2中集成和使用Ajax技术。 1. **Ajax简介**: Ajax(Asynchronous JavaScript and XML)是...
此外,为了更好地展示数据,可能还需要在Struts2中使用Interceptor(拦截器),例如,`params`拦截器用于将请求参数绑定到Action,`validation`拦截器负责验证表单数据,`workflow`拦截器管理Action的生命周期。...
#### 四、在Struts中使用Ajax的优势 **1. 不需要额外的库文件或服务器端代码** - 可以直接使用现有的Struts库文件和Action。 - 减少了项目复杂度,提高了开发效率。 **2. 技术栈成熟** - 所有技术组件...
1. **Struts2配置**:首先,需要在`struts.xml`配置文件中定义一个Action,这个Action将处理Ajax请求。你需要设置一个特定的结果类型,比如`json`,这将使Struts2以JSON格式返回数据,非常适合Ajax调用。 2. **Ajax...
Struts2与Ajax 的实现原理,于Servlet+Ajax原理是一致的,都是通过后台的response.getWriter().print("");把数据传输给前台的。 前台Ajax格式如下(需要导入ajax库,比如:jquery-1.11.3.js) 格式: $(function()...
总结来说,这个AjaxStruts2Json实例展示了如何在Struts2框架下利用Ajax进行异步请求,通过JSON传递和处理数据,从而实现网页的局部刷新。实践这个实例,开发者可以更深入地理解Struts2、Ajax以及JSON在实际项目中的...
4. **Struts 2与AJAX的集成**:介绍如何在Struts 2应用中使用AJAX,可能包括XMLHttpRequest对象、JSON数据格式、以及Struts2-AJAX插件的使用。 5. **实战示例**:提供了一些实际的开发案例,如创建一个简单的Struts ...
JSON插件允许开发者轻松地将Java对象转换为JSON格式,以便在AJAX请求和响应中使用。在Struts2的showcase应用中,JSON插件通过FreeMarker模板来展示如何输出JSON结果,虽然这种方式有一定的灵活性,但不如直接使用...
Struts2、jQuery和Ajax是Web开发中的三个关键组件,它们共同构成了文件异步上传的基础框架。这个项目是在MyEclipse环境下实现的一个简单的文件上传功能,让我们深入了解一下这些技术及其在文件上传中的应用。 首先...
4. 在JSP页面中使用JavaScript或jQuery进行Ajax调用,以及处理返回的结果。 5. 如何设计和组织MVC架构,使得Struts和Ajax能够有效地协同工作。 通过深入研究这个示例,你可以更好地理解和掌握Struts与Ajax的结合...
在这个“ajax+struts2.0+jsp下拉列表级联”的示例中,我们将探讨如何利用这三个技术实现这种功能。 首先,AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页...
首先,为了在Struts2中使用Ajax和JSON,我们需要引入以下库: 1. Struts2的核心库:`struts2-core.jar` 2. Struts2的JSON插件:`struts2-json-plugin.jar` 3. JSON处理库:`json-lib.jar`(通常在Struts2的JSON插件...
总结,使用Ajax和Struts框架,我们可以构建一个高效的Web应用,实现在不刷新整个页面的情况下,获取和处理服务器返回的JSON数据,从而提升用户体验。通过实践和研究这个项目实例,你将能深入掌握这一技术的运用。
在这个"struts2 jqurey ajax简单实例"中,我们将探讨如何将这三个技术结合,以实现一个动态且高效的Web应用。 首先,Struts2中的Action类是业务逻辑的核心。当你在页面上触发一个事件,比如点击一个按钮,这个事件...
- **创建Ajax Action**:在Struts配置文件(struts-config.xml)中,定义一个新的Action,用于处理Ajax请求。 - **使用Ajax标签库**:像DWR这样的框架提供了Ajax标签库,使得在JSP页面上直接调用Ajax请求变得简单。 ...
7. **示例代码**:在提供的压缩包文件“struts2中实现AJAX的小实例”中,可能包含了一个简单的Struts2 Action、对应的JSP页面以及JavaScript代码。Action类可能有一个返回JSON数据的方法,JSP页面可能包含一个AJAX...