Struts2 官方教程:AJAX

AJAX是异步JavaScript及XML的缩写词。根本上,一段JavaScript可以创建一个HTTP请求,并直接更新页面的某部分,而没有普通情况那样的POST或GET请求、并且刷新整个页面。更棒的是,一个页面可以包含多个创造同步(异步)请求的JavaScript。
关键点是当一段脚本创建一个“Ajax请求”(XHR)时,服务器不知道它来自脚本,并且像对待其它请求那样处理它。Ajax如此成功的一个原因是,它能够与仙游的服务器端技术配合良好,包括Struts。
不一样的不是Ajax请求,而是Ajax响应(Ajax response)。不是返回一个供浏览器来显示(或重显示)的完整页面,一个Ajax响应会只返回页面的一部分。这个响应可以是XML,HTML,普通的文本,另一个脚本,或者任何执行调用的脚本所希望的其它东西。
Struts1和Struts2都能够返回任意类型的响应。我们不局限在转发服务器页面。在Struts 1 中,你可以做类似下面这样的事:

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World!  This is an AJAX response from a Struts Action.");
out.flush();
return null;

在Struts 2 中,我们可以用Stream结果做相同的事。


有更简单的办法哦!
使用Struts 2 插件(例如 JSON 插件, jQuery 插件等等),是普遍、推荐的来书写直接来自于动作的响应。请阅读下面的部分来了解细节。

Struts 2 result Action

package actions;
<b>
import java.io.InputStream;
import java.io.StringBufferInputStream;
import com.opensymphony.xwork2.ActionSupport;
<b>
public class TextResult extends ActionSupport{
    private InputStream inputStream;
    public InputStream getInputStream() {
        return inputStream;
    }
<b>
    public String execute() throws Exception {
        inputStream = newByteArrayInputStream("Hello World! This is a text string response from a Struts Action.");
        return SUCCESS;
    }
}

Struts 2 配置TextResult 动作

<action name="text-result" class="actions.TextResult">
    <result type="stream">
        <param name="contentType">text/html</param>
        <param name="inputName">inputStream</param>
    </result>
</action>


Struts2 同样也可以使用插件来返回一个JSON响应。
在客户端,有两种基本的策略,就是混合与匹配。
搜先,你可以使用一个JSP标签类型。这里,你不需要知道非常多关于Ajax或JavaScript的知识。taglib完成了所有工作,你只需要指出,如何使用tablib。标准Struts 2 taglib 包括了几个 Ajax JSP 标签,以及大量可用的第三方库,包括:

  • Ajax Tags
  • AjaxParts Taglib
  • ColdTags Suite
  • Prize Tags
  • JSON-taglib

你可以利用像Dojo、JQUERY、或者YUI,以及StreamResult或者JSON插件,在普通旧式的HTML页面上使用普通旧式的Ajax窗体。这里,天空才是极限,但你实际上需要将JavaScript作为一门语言进行一定的学习。

Ajax 插件

尽管Struts能够与Ajax即插即用,但为了附加好处,有几个以Ajax为中心的插件可以使用。

  • jQuery
  • Ajax Parts
  • Dojo
  • YUI

其它Ajax插件

  • Ajax File Upload
  • GWT
  • JSON

Ajax Results with JSP

尽管服务器端的页面大部分情况下更多地用来生成HTML,但我们可以使用服务器端页面来创建其它类型的数据流。这里是一个例子:

book.jsp

“`
<%@ page import = java.util.Iterator,
java.util.List,
com.esolaria.dojoex.Book,
com.esolaria.dojoex.BookManager” %>
<%
String bookIdStr = request.getParameter(“bookId”);
int bookId = (bookIdStr == null || “”.equals(bookIdStr.trim()) ) ? 0:Integer.parseInt(bookIdStr);
Book book = BookManager.getBook(bookId);
if( book != null ) {
out.println(book.toJSONString());
System.out.println(“it is: “+book.toJSONString());
}
%>
在上面的示例代码中,我们使用System.out.println 来返回一个JSON数据流作为响应。关于这个技术更多的内容,可以查看文档使用Dojo和JSON构建Ajax应用(英文教程)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值