Java代码
package cn.ysh.studio.struts2.json.demo.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import net.sf.json.JSONObject;
import cn.ysh.studio.struts2.json.demo.bean.User;
import com.opensymphony.xwork2.ActionSupport;
public
class UserAction extends ActionSupport {
/**
*
*/
private static
final long serialVersionUID =
1L;
private Map<String, Object> dataMap;
/**
* 构造方法
*/
public UserAction() {
dataMap =
new HashMap<String, Object>();
}
/**
* 测试通过action以视图方式返回JSON数据
* @return
*/
public String testByJSP() {
User user =
new User();
user.setId(
"123");
user.setName(
"JSONActionJSP");
user.setPassword(
"123");
user.setSay(
"Hello world !");
JSONObject jsonObject=
new JSONObject();
jsonObject.accumulate(
"user", user);
jsonObject.accumulate(
"success",
true);
ServletActionContext.getRequest().setAttribute(
"data", jsonObject.toString());
return SUCCESS;
};
/**
* 测试通过action以Struts2默认方式返回JSON数据
* @return
*/
public String testByAction() {
dataMap.clear();
User user =
new User();
user.setId(
"123");
user.setName(
"JSONActionStruts2");
user.setPassword(
"123");
user.setSay(
"Hello world !");
dataMap.put(
"user", user);
dataMap.put(
"success",
true);
return SUCCESS;
}
/**
* 通过action是以传统方式返回JSON数据
* @throws IOException
*/
public void doAction()
throws IOException{
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType(
"text/html");
PrintWriter out;
out = response.getWriter();
User user=
new User();
user.setId(
"123");
user.setName(
"JSONActionGeneral");
user.setPassword(
"JSON");
user.setSay(
"Hello , i am a action to print a json!");
JSONObject json=
new JSONObject();
json.accumulate(
"success",
true);
json.accumulate(
"user", user);
out.println(json.toString());
out.flush();
out.close();
}
/**
* Struts2序列化指定属性时,必须有该属性的getter方法,实际上,如果没有属性,而只有getter方法也是可以的
* @return
*/
public Map<String, Object> getDataMap() {
return dataMap;
}
}
完整的struts.xml配置文件如下:
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=
"json" extends=
"json-default" namespace=
"/test">
<action name=
"testByAction"
class=
"cn.ysh.studio.struts2.json.demo.action.UserAction" method=
"testByAction">
<result
type=
"json">
<!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->
<!-- 默认将会序列所有有返回值的getter方法的值,而无论该方法是否有对应属性 -->
<param name=
"root">dataMap</param>
<!-- 指定是否序列化空的属性 -->
<!--
<param name=
"excludeNullProperties">
true</param>
-->
<!-- 这里指定将序列化dataMap中的那些属性 -->
<!--
<param name=
"includeProperties">
userList.*
</param>
-->
<!-- 这里指定将要从dataMap中排除那些属性,这些排除的属性将不被序列化,一半不与上边的参数配置同时出现 -->
<!--
<param name=
"excludeProperties">
SUCCESS
</param>
-->
</result>
</action>
</
package>
<
package name=
"default" extends=
"struts-default" namespace=
"/">
<action name=
"testJSONFromActionByGeneral"
class=
"cn.ysh.studio.struts2.json.demo.action.UserAction" method=
"doAction">
</action>
<action name=
"testByJSP"
class=
"cn.ysh.studio.struts2.json.demo.action.UserAction" method=
"testByJSP">
<result name=
"success">/actionJSP.jsp</result>
</action>
</
package>
</struts>
转载请注明原文地址: https://ju.6miu.com/read-1312675.html