- 讲Struts2 解压缩目录的lib文件下的struts2-json-plugin-2.2.1.jar文件复制到web应用的WEB-INF文件下。
- <?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>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<package name="example" namespace="/" extends="json-default">
<action name="getJsonData" class="test.action.JsonAction" method="getJsonData">
<result type="json">
<param name="noCache">true</param>
<param name="contentType">text/html</param>
<param name="root">dataMap</param>
</result>
</action>
<action name="getJsonData2" class="test.action.JsonAction" method="getJsonData2">
<result type="json">
<param name="noCache">true</param>
<param name="contentType">text/html</param>
<param name="root">dataMap</param>
</result>
</action>
</package>
</struts> -
package test.action;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;import org.apache.struts2.ServletActionContext;
import test.pojo.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class JsonAction extends ActionSupport {
public JsonAction () {
dataMap = new HashMap<String, Object>();
}
private Map<String, Object> dataMap ;
public String getJsonData(){
dataMap.clear();
System.out.println("ggg*************");
User user = new User();
user.setName("yllly");
user.setAge(10);
user.setBirDate(new Date());
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);return SUCCESS;
}
public String getJsonData2(){
dataMap.clear();
System.out.println("ggg*************");
User user = new User();
user.setName("ylll222y");
user.setAge(10);
user.setBirDate(new Date());
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);return SUCCESS;
}
public Map<String, Object> getDataMap() {
return dataMap;
}
}
-
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'testJson.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="js/jquery-1.9.0.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--></head>
<script type="text/javascript">
$(function(){
$("#json").click(function(){
$.ajax({
type : "post",//发送方式
url : "example/getJsonData",// 路径
success : function(dataRole) {
/*var obj = $.parseJSON(dataRole);*/
var obj = eval("(" + dataRole + ")");
alert(dataRole);
}
});
})
/****************/
$("#json2").click(function(){
$.ajax({
type : "post",//发送方式
url : "example/getJsonData2",// 路径
success : function(dataRole) {
/*var obj = $.parseJSON(dataRole);*/
var obj = eval("(" + dataRole + ")");
alert(obj.user);
}
});
})
});
/* {"jsonData":"success","user":{"age":10,"birDate":"2013-05-22T10:13:11","name":"yy"}} */
</script>
<body>
This is my JSP page. <br>
<input type="button" value="testJson" id="json">
<input type="button" value="testJson" id="json2">
<div id="testjson"></div>
</body>
</html>
<!-- {"success":true,"user":{"age":10,"birDate":"2013-05-22T10:43:43","name":"yllly"}}
{"success":true,"user":{"age":10,"birDate":"2013-05-22T10:44:07","name":"ylll222y"} -->
注意:在第二种的<param name="root">dataMap</param>可以只将该参数的做指定的Action属性序列化成JSON字符串,返回给客户端。,不再把整个Action对象序列化成JSON字符串。