`
a2429854489
  • 浏览: 3251 次
社区版块
存档分类
最新评论

使用Struts 2开发应用02:AJAX

阅读更多

文章翻译自Struts 2官方文档

 

AJAX是Asynchronous JavaScript and XML的首字母缩略词。本质上,JavaScript能产生一个HTTP请求并立即更新部分页面,而不是通过传统的POST或者GET方式并更新整个页面。然而更好的是,一个页面可以包含若干产生同步(异步)请求的JavaScript。

 

关键点是当一个脚本产生一个“AJAX请求”(XHR)时,服务器不知道这个请求来自一个脚本,并且像其他请求一样处理它。AJAX如此成功的一个原因是,它和现有的包括Struts在内的服务器技术一起工作得很好。

 

不是Ajax请求不同,而是Ajax响应。Ajax响应仅仅返回浏览器显示(或者重新显示)页面的一部分,而不是返回整个页面。这个响应可以是XML形式,或者HTML,或者普通文本,另一个脚本,或者调用脚本想要的任何其他东西。

 

Struts 1和Struts 2都能返回任意类型的响应。我们并不限制跳转到一个服务器页面。在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)result做同样的事情。

 

还有更容易的方式!

 

一般来说,使用Struts 2插件(例如,JSON插件,jQuery插件,等等)比直接从action向响应输出更好。更多细节参考下面章节。

Struts 2 Stream result Action

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

 Struts 2 Configuring the TextResult Action

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

 提示:使用插件,Struts 2也可以返回JSON(JavaScript Object Notation)响应。

 

在客户端,有两种基本的策略,这两个策略可以混合使用也可以分开使用。

 

首先,你可以使用一些JSP标签类型。在这里,你不需要知道所有关于Ajax或者JavaScript的知识。标签库做了所有的事情,你只需要关注如何使用这些标签库。标准的Struts 2标签库包含若干Ajax JSP标签,也可获得许多第三方库,包括:

作为选择,你可以在普通HTML页面使用普通Ajax小部件(widget),使用DojojQuery,或则YUI,和SteamResult或者JSON插件。在这里,虽然篇幅有限,但是你实际上已经学习了JavaScript语言的的一部分。

Ajax插件

虽然Struts和开箱即用的Ajax工作的很好,但是为了增加功能,若干以Ajax为中心的插件可以利用。

Ajax标签插件

  • jQuery - jQuery插件提供了ajax功能和UI小部件,UI小部件是一个一个基于jQuery框架的JavaScript Grid。
  • Ajax Parts - AjaxParts标签库(APT)是Java Web Parts(JWP)项目(http://javawebparts.sourceforge.net)的一个组件,APT允许在以Java为基础的web应用中使用纯净的(理解(read):不必编写JavaScript)AJAX功能。
  • Dojo - Ajax标签Dojo插件代表着Struts 2的一个主题。对于Struts 2.1,Dojo标签作为Struts的插件直到版本2.3.x。从版本2.5以后这个插件不再作为Struts2分发版的一部分。
  • YUI - 到目前位置Yahoo用户接口(YUI)插件只有少数几个标签可以使用,因为YUI标签比Dojo版本的标签更容易使用。

其他Ajax插件

  • Ajax File Upload - 我们使用Ajax文件上传插件可以上传文件到服务器并且一部监视文件上传的进度。
  • GWT - Google Web Toolkit插件暴露Struts 2 action给GWT RPC机制。
  • JSON - JSON插件序列化Action的属性到JSON,使响应JavaScript请求更容易。

完整的Struts 2插件列表参考Struts插件仓库

在JSP中使用Ajax Results

虽然服务器页面大多数时候用来生成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("itis: " + book.toJSONString());
    }
%>

 在示例代码中,作为响应我们用System.out.println返回一个JSON数据流。这项技术的更多信息,参考使用Dojo和JSON构建Ajax应用

 

分享到:
评论

相关推荐

    搞定J2EE核心技术与企业应用:Ajax,JSP,Struts2,Spring,Hibernate,完整扫描版

    而本书《搞定J2EE核心技术与企业应用:Ajax,JSP,Struts2,Spring,Hibernate》则是一本针对Java Web开发的专业书籍,它详细介绍了在现代企业级应用开发中常用的技术和框架。 书中首先对Java EE的来源、整体框架和...

    Struts2+Jquery+Ajax

    8. 实例演示:使用Struts2+Jquery+Ajax实现动态加载数据或表单验证 "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必...

    用案例学Java Web整合开发:Java+Eclipse+Struts 2+Ajax

    Java Web整合开发是构建Web应用程序的...通过学习和实践,你可以掌握如何在Eclipse环境中搭建Java Web开发环境,使用Struts 2框架组织应用结构,以及利用Ajax优化交互体验。这将为你在Java Web开发领域打下坚实的基础。

    struts2ajax项目

    data: {key1: value1, key2: value2}, // 发送到服务器的数据 dataType: 'json', // 预期服务器返回的数据类型 success: function(response) { // 在这里处理成功的回调,response是服务器返回的数据 }, error...

    struts2中使用ajax

    总的来说,Struts2通过与jQuery等JavaScript库的集成,为开发人员提供了强大的Ajax支持,使得在Java Web应用中实现动态交互变得简单且高效。通过理解和熟练运用上述知识点,你可以创建出响应迅速、用户体验良好的Web...

    struts2的Ajax实现注册验证

    总的来说,Struts2和Ajax的结合使用使得Web应用能够提供更快速、更直观的用户交互,而这个代码和jar包组合可能就是实现这一目标的一个实例。通过阅读提供的文档和使用示例,你可以深入了解并实践这一技术,从而提升...

    Struts 2及AJAX框架的详细介绍

    4. **Struts 2与AJAX的集成**:介绍如何在Struts 2应用中使用AJAX,可能包括XMLHttpRequest对象、JSON数据格式、以及Struts2-AJAX插件的使用。 5. **实战示例**:提供了一些实际的开发案例,如创建一个简单的Struts ...

    struts2对AJAX的支持

    Struts2通过集成jQuery插件和其他库,使得在基于Struts2的应用中集成AJAX变得简单易行。 首先,我们来理解一下Struts2是如何实现AJAX支持的。Struts2提供了一个名为`struts2-jquery-plugin`的插件,它扩展了Struts2...

    第3章_Struts2标签库详解与AJAX技术应用.rar

    Struts2是一个强大的MVC(Model-View-Controller)框架,它在Java Web开发中广泛使用,极大地简化了Web应用程序的构建。本章主要聚焦于Struts2的标签库及其AJAX技术的应用,这两个关键点对于提升用户体验和增强应用...

    struts2ajax

    通过学习和实践"struts2ajax"中的例子,你可以掌握如何在Struts2应用中有效地使用Ajax技术,提升用户体验,并深入理解Web开发中后端与前端的协作方式。这三个例子将覆盖基本的Ajax请求、使用Struts2插件以及自定义...

    struts2+jquery+ajax文件异步上传

    Struts2、jQuery和Ajax是Web开发中的三个关键组件,它们共同构成了文件异步上传的基础框架。这个项目是在MyEclipse环境下实现的一个简单的文件上传功能,让我们深入了解一下这些技术及其在文件上传中的应用。 首先...

    Struts2与AJAX

    总结来说,Struts2通过与AJAX的整合以及JSON插件的使用,极大地提升了Web应用的用户体验。它不仅提供了简单的API和工具,使得开发者可以快速地实现AJAX功能,同时还能充分利用现有的JSON库和浏览器的JSON支持,降低...

    使用Struts 2框架开发租房网站

    Struts 2是一个强大的MVC(Model-View-Controller)框架,被广泛应用于Java Web应用程序的开发中。在北大青鸟Y2学年的课程中,学生们通常会学习如何利用Struts 2框架来构建一个租房网站,这涉及到多个关键知识点。 ...

    struts2实现ajax

    在Struts2中实现Ajax(Asynchronous JavaScript and XML)可以极大地提升Web应用的用户体验,因为它允许部分页面动态更新,而无需整个页面刷新。以下是对Struts2实现Ajax的详细解释: 1. **Ajax基础**: Ajax的...

    零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).rar

    本资源"零基础学Java[1].Web开发:JSP.Servlet.Struts.Spring.Hibernate.Ajax(PPT).rar"提供了一套完整的入门教材,涵盖了从基础到进阶的关键知识点。 首先,我们从基础开始,讲解【HTML相关技术基础知识】。HTML...

    Struts2开发依赖包

    在"Struts2开发依赖包"中,包含了一系列核心库和其他支持库,这些库对于成功地搭建和运行Struts2应用至关重要。以下是一些主要的依赖包及其作用: 1. **Struts2 Core**:这是Struts2的核心库,包含了Action、Result...

    开发基于Struts Spring Hibernate Ajax的网上信息发布平台(Struts Hibernate Spring Ajax)--Chapter1

    在本章中,我们将深入探讨如何开发一个基于Struts、Spring、Hibernate和Ajax的网上信息发布平台。这四个技术是Java Web开发中的核心组件,它们各自承担着不同的职责,共同构建了一个强大而灵活的后端架构。 **...

    Ajax与Struts2异步请求数据

    总结起来,Ajax与Struts2的结合使得Web应用能更高效地处理用户交互,提高响应速度。通过配置Struts2拦截器、使用JSON插件以及编写适当的动作类和前端页面,开发者可以轻松实现异步数据请求和更新。这种技术在现代Web...

    struts2应用ajax

    1. **JQuery与Struts2 Ajax插件**:虽然Ajax可以通过原生JavaScript实现,但在实际开发中,我们通常会使用JQuery库,因为它简化了Ajax调用的过程。Struts2有一个Ajax插件,它提供了与JQuery集成的功能,使得在Struts...

Global site tag (gtag.js) - Google Analytics