zoukankan      html  css  js  c++  java
  • struts 2 中AJAX的使用及Struts 2 JSON的使用

      这两天不看到不少人在Struts 2中使用AJAX的方法都是错的(或者说是过时的),所以想起写这么一片博客,来告诉大家Struts 2中的AJAX是怎么用的。

      如果大家对Struts 2的文档很了解,并且有一定的英文文档阅读能力,推荐大家去参考Struts 2的官方文档。

      官方文档相关内容:

      如果不会阅读Struts 2的文档,或者英文阅读能力有限,可以参考我下面的内容(当然,这里所介绍的只是最简单的使用方法)。

    1. Struts 2中使用AJAX

        Struts 1和Struts 2都能使用如下代码实现AJAX的使用:

    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中可以使用InputStream实现:

    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 StringBufferInputStream("Hello World! This is a text string response from a Struts 2 Action.");
    return SUCCESS;
    }
    }

    配置文件struts.xml:

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

      这样,我们只需要更改Action类中的inputStream值,就能够实现AJAX输出啦。

    2. Struts 2中使用JSON

      首先,请Struts 2.1.7+的用户引入下载的Struts 2包集合中的struts2-json-plugin.jar

      Struts 2.1.7一下的用户,请去下载该Plugin包,改包位置在Google Code上有发布。(现在已经停止更新了,推荐使用新版本Struts 2框架。)

      之后,Action类不需要更改,只需要在struts.xml文件中配置相关内容就可以使用了。(很便利的~)

      配置文件如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"
    >

    <struts>

    <package name="example" extends="json-default">
    <action name="JSONExample" class="example.JSONExample">
    <result type="json"/>
    </action>
    </package>

    </struts>

       请注意如下几点:

    • package的extends是“json-default”,如果没有继承这个包,则会抛出异常,显示没有result type为json
    • result的type请设置为json
    • 前台JavaScript代码,请使用JSON格式接收。(如jQuery请设置AJAX的dataType为json)

       至此,就可以使用JSON了。如果需要更高级的操作,请自行参考文档。

  • 相关阅读:
    R--相关分布函数、统计函数的使用
    Spark Streaming
    统计与分布的相关知识
    Python--WebDriverWait+expected_conditions的一个应用
    Python+Selenium与Chrome如何进行完美结合
    Python+Selenium+Chrome 的一个案例
    python -使用Requests库完成Post表单操作
    JetBrains PyCharm 2018.2.4 x64 工具里如何安装bs4
    用JetBrains PyCharm 开发工具写一个简单python案例
    dom4j学习总结(一)
  • 原文地址:https://www.cnblogs.com/rainisic/p/struts2_ajax_json.html
Copyright © 2011-2022 走看看