标签:
描述:当前端使用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>
标签:
原文地址:http://www.cnblogs.com/kailing-con/p/4281705.html