您的位置:首页 > 编程语言 > Java开发

struts2返回json格式的数据

2015-02-09 15:38 375 查看
描述:当前端使用ajax发送请求到action时,如果需要返回json格式的数据,如对象集合。具体做法如下:

前端代码:

<%@ 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 'enty_json.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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<!-- 引入jquery -->
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.9.1.js"></script>

<script type="text/javascript">
function loadUsers(){
$.ajax({
url: "user.action",
type:"post",
// data:"name="+$('#name')[0].value+"&password=123",//向后台传送的数据格式
dataType:"json",
success: function(data, textStatus){
alert(textStatus);
$.each(data,function(n,value){
var str = "<tr><td>"+value.id+"</td><td>"+value.name+"</td></tr>";
$("#userList").append(str);
});
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
}
});
}
</script>

</head>

<body>
<input type="button" id="btn" onClick="loadUsers()" value="加载对象列表">
<center>
<div>对象列表</div>
<table id="userList">
<tr><td>ID</td><td>姓名</td></tr>
</table>
</center>

</body>
</html>


action中的代码:

package action;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import dao.UserDao;
import enty.User;

public class UserAction extends ActionSupport{
private List< User> lists = new ArrayList<User>();

//使用struts2返回json数据,需要在struts.xml配置要返回的数据
public String execute() {
UserDao userDao = new UserDao();
lists = userDao.getUserList();
return "success";
}
//传统方式返回ajax数据,这种返回方式不需要再配置文件中配置
public String getState(){
System.out.println("传统的ajax");
HttpServletResponse response = ServletActionContext.getResponse();
try {
PrintWriter out = response.getWriter();
out.println("{\"success\":\"true\",\"type\":\"succ\"}");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//这个方法必须写上
public List<User> getLists() {
return lists;
}
public void setLists(List<User> lists) {
this.lists = lists;
}

}


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>
<!-- 禁用动态方法调用(即禁用xxx!add.action方式的调用,因为Struts2.1版本开始就不建议这种方式的使用) -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<package name="struts2" extends="struts-default,json-default">
<action name="user_*" class="action.UserAction" method="{1}">
<result name="success" type="json">
<param name="root">lists</param><!-- action中的属性 -->
</result>
</action>

</package>

</struts>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐