你的位置:首页 > Java教程

[Java教程]Struts2返回Json数据(使用Struts2插件)


这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据。

 

一、其中主要步骤有:

1.将struts2-json-plugin.jar插件拷贝到项目的"/WEB-INF/lib"文件夹下;

2.编写Action类文件;

3.在struts.json-default“,Action的Result类型为json,即type="json",而且不对应任何视图资源。

 

二、示例代码:

Action类文件:

package com.example.action;import java.util.ArrayList;import com.opensymphony.xwork2.ActionSupport;public class StrutsJsonAction extends ActionSupport {  private int i=123;  private String str="str";  private int[] array={1,2,3};  private ArrayList<String> list;    public int getI() {    return i;  }  public void setI(int i) {    this.i = i;  }  public String getStr() {    return str;  }  public void setStr(String str) {    this.str = str;  }  public int[] getArray() {    return array;  }  public void setArray(int[] array) {    this.array = array;  }  public ArrayList<String> getList() {    return list;  }  public void setList(ArrayList<String> list) {    this.list = list;  }  public String execute(){    list = new ArrayList<String>();    list.add("red");    list.add("green");    list.add("yellow");    return SUCCESS;  }}

 

struts.

<??><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts>  <package name="json-example" namespace="/" extends="json-default">    <action name="JSONExample" class="com.example.action.StrutsJsonAction">      <result name="success" type="json"/>    </action>  </package></struts>  

然后在浏览器中访问"http://localhost:8080/Struts2_JSON/JSONExample",显示结果如图:

JSON插件会将所有可序列化Action属性序列化为JSON数据。

 

三、配置JSON类型的Result:

序列化包含的属性:

<result type="json">  <!-- 是否取消浏览器缓存-->  <param name="noCache">true</param>  <!-- 设置服务器响应类型-->  <param name="contentType">application/json</param>  <!-- 匹配的表达式属性名都会被序列化-->  <param name="includeProperties">i,str</param> </result>

 

只序列化指定的Action属性:

<result type="json">   <!-- 是否取消浏览器缓存-->   <param name="noCache">true</param>   <!-- 设置服务器响应类型-->   <param name="contentType">application/json</param>   <!-- 只序列化Action内指定的属性-->  <param name="root">list</param></result>