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原书使用,快速学习Struts2技术。
由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。
研磨struts2博文,详细讲解了struts2运行流程,值得大家阅读
《研磨Struts2》原书配套PPT,结合《研磨Struts2》配套使用,快速学习Struts2框架。
研磨struts2_系列文章.pdf
研磨Struts2 高清完整版,请和第一部分一起下载啊
《研磨Struts 2》PDF版本下载
研磨Struts2_12859679_高清完整版
研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人
研磨struts,仅是简版,我也是从网上下来的。大家凑合看吧。
第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章 享元...