标签:
这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据。
一、其中主要步骤有:
1.将struts2-json-plugin.jar插件拷贝到项目的"/WEB-INF/lib"文件夹下;
2.编写Action类文件;
3.在struts.xml文件中配置这个Action,这个Action所在的"<package.../>"必须继承”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.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!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>
标签:
原文地址:http://www.cnblogs.com/liubaozhe/p/4418741.html