14.2 Struts2对Ajax的支持
14.2.1概述
Struts2对Ajax提供了非常好的支持,不但功能强劲,而且简单易用。
Struts2并没有自行开发新的Ajax框架,而是使用了目前比较流行的Ajax框架——Dojo和DWR,在他们的基础之上实现了很多常见的功能。同时,Struts2也可以通过插件的形式来使用JSON,从而使得Ajax的实现更加灵活方便。
看到这里,可能有些朋友会说:“Dojo和DWR都不会,这可怎么办?”。事实上,Struts2早替大家想好了,不需要大家直接去使用Dojo和DWR,而是直接使用Struts2提供的Ajax JSP tags即可。因此这里并不会涉及Dojo和DWR的知识,有需要的朋友,请参看相应的资料。
当然,如果Ajax JSP tags的功能满足不了你的需要,你可以直接使用原始的Ajax技术,也可以直接使用Ajax的框架,诸如Dojo、JQuery、YUI等等。因为Struts2直接提供一个能直接向客户端返回一个输出流的Result,直接把后台处理后的数据输出回到前台,然后由Ajax来接受和处理这些数据。
14.2.2名为Stream的Result
使用名为Stream的Result来实现跟前面直接使用Ajax的示例一样的功能。
1:实现Action
先看看Action的实现吧,功能跟前面的server.jsp类似,示例代码如下:
java代码:
- public class AjaxAction extends ActionSupport {
- public String account;
- public String password;
-
- private InputStream inputStream;
- public InputStream getInputStream() {
- return inputStream;
- }
-
- public String execute() throws Exception {
-
- Set<String> set = new HashSet<String>();
- set.add("account1");
- set.add("account2");
- set.add("account3");
-
- if(set.contains(account)){
- inputStream = new ByteArrayInputStream("输入不正确,请重新输入".getBytes("utf-8"));
- }else{
- inputStream = new ByteArrayInputStream("输入正确".getBytes("utf-8"));
- }
- return this.SUCCESS;
- }
- }
上面的实现中,属性account和password使用来接收前台页面传递过来的参数的,这个很简单,就不多说了。
要注意其中有一个inputstream,还提供了一个getter方法,如下:
java代码:
- private InputStream inputStream;
- public InputStream getInputStream() {
- return inputStream;
- }
这是提供给result用的,result的type是“stream”,顾名思义,返回的不应该是普通的文本而是一个流了。
另外这个流要输出的内容,是在execute方法里面设置的,通过getBytes("utf-8")进行转换,不但得到了byte数组,还顺带解决了传输的中文问题。
2:配置struts.xml
Action实现好了,看看如何来配置它,需要注意result的type,示例代码如下:
java代码:
- <action name="ajaxAction" class="cn.javass.ajax.AjaxAction">
- <result type="stream">
- <param name="contentType">text/html</param>
- <param name="inputName">inputStream</param>
- </result>
- </action>
配置的参数contentType是指的返回的数据类型,而inputName配置的就是要返回的流,这个值和Action中定义的流类型的属性相对应。
3:修改客户端
客户端几乎没有什么变化,主要就是要修改Ajax提交到后台的路径,示例代码如下:
java代码:
- myRequest.open("GET","ajaxAction.action?account="+account,true);
4:测试运行
可以去测试运行一下了,效果应该和前面是一样的。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4129.html】
欢迎访问http://sishuok.com获取更多内容
分享到:
相关推荐
这个压缩包中的“研磨Struts2配书视频对应的演示源代码”是《研磨Struts2》一书作者为了帮助读者更好地理解和实践书中理论知识而提供的实际示例代码。 首先,让我们深入理解Struts2的核心概念和技术特性: 1. **...
### 知识点一:Struts2入门(MVC HelloWorld) #### 1.1 Struts2简介 ...以上就是关于“研磨Struts2”的主要知识点梳理,通过深入学习这些内容,开发者可以更好地掌握Struts2框架的核心技术和实践技巧。
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
根据提供的文件信息,我们可以推断出这是一份关于《研磨Struts 2》书籍PDF版本的下载资源。为了更好地理解和概括这份资料所涉及的知识点,我们先来了解一下Struts 2框架及其重要性,然后深入探讨《研磨Struts 2》这...
《研磨Struts2》这本书是专门针对Struts2框架的学习指南,通过深入浅出的方式讲解了Struts2的核心概念和技术。其配套的PPT和视频旨在帮助读者更直观地理解书中的理论知识,并将其付诸实践。 在研读《研磨Struts2》...
研磨Struts2 高清完整版,请和第一部分一起下载啊
此外,Struts2还提供了对JSP、FreeMarker等视图技术的支持。 4. **HelloWorld示例**:这是学习任何新框架的第一步。书中详细介绍了如何创建一个简单的Struts2应用,从Servlet+JSP+JavaBean实现MVC模式,然后逐步...
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式...
Java工程师三大框架面试题.pdf
第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式...
研磨设计模式.part2 一定要下载5部分
第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元...