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了。如果需要更高级的操作,请自行参考文档。

原文地址:https://www.cnblogs.com/rainisic/p/struts2_ajax_json.html