struts2返回json格式的数据

描述:当前端使用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>
时间: 2024-08-18 05:21:35

struts2返回json格式的数据的相关文章

解决在IE中返回JSON格式的数据时提示下载的问题

如题,以ASP.NET MVC为例,解决办法如下: 控制器中: public JsonResult Test() { return Json(json, "text/html"); } 视图中: $.post("/controller/action/", function (data) { data = JSON.parse(data); }); 解决在IE中返回JSON格式的数据时提示下载的问题

在IE中MVC控制器中返回JSON格式的数据时提示下载

最近做项目时,视图中用jquery.form.js异步提交表单时,接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据.代码如下: 视图中js代码: $("#formDoUpload").ajaxSubmit({                    type: "POST",                    url: "/controller/action/",  

asp.net MVC控制器中返回JSON格式的数据时提示下载

Asp.net mvc在接收的是JSON格式的数据,但是奇怪的是在IE中提示下载文件,其他浏览器中一切正常,下载后,里面的内容就是在控制器中返回的数据.代码如下: 视图中js代码: $("#form").ajaxSubmit({                    type: "POST",                    url: "/controller/action/",                    datatype: &

夺命雷公狗jquery---54通过ajax的底层实现返回json格式的数据

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="js/jquery.js"></script> <script> $(function(){ $('#btnok').bind('click',function(){ $.ajax({ type:'

一般处理程序返回Json格式的数据

1. 添加 引用 using System.Web.Script.Serialization; 2. List<Student> list = new List<Student>();            list.Add(new Student("张三","男",18));            list.Add(new Student("李","女",19));            list.A

SpringMVC 统一返回JSON格式数据到前端

有时在给APP做接口功能的时候,都是返回JSON格式的数据,所以最好的只好在工程设置一个统一的数据返回方式 在SpringMVC 直接配置XML可以产生这种配置,比较简单 Spring的版本我用的是4.3.3的 <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter&qu

ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

话不多说,直接进入主题. 需求:基于Http请求接收Json格式数据,返回Json格式的数据. 整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性对token进行验证,并通过时间戳的方式统一处理接收与返回的时间格式. 请求Json格式: { "Cmd": "login", "Token": "", "PageNo": 0, "OnePageNu

javascript 解析ajax返回的xml和json格式的数据

写个例子,以备后用 一.JavaScript 解析返回的xml格式的数据: 1.javascript版本的ajax发送请求 (1).创建XMLHttpRequest对象,这个对象就是ajax请求的核心,是ajax请求和响应的信息载体,单是不同浏览器创建方式不同 (2).请求路径 (3).使用open方法绑定发送请求 (4).使用send() 方法发送请求 (5).获取服务器返回的字符串   xmlhttpRequest.responseText; (6).获取服务端返回的值,以xml对象的形式存

如何让webapi只返回json格式数据

最近脑子不好用,总记不住事,以前搞过让webapi只返回json格式的数据,今天有人问我又突然想不起了,后来总结一下,备忘一下,大概有下面几种处理方式 1.在WebApiConfig类的Register方法增加一行代码,清除掉xmlformatter. config.Formatters.Remove(config.Formatters.XmlFormatter); 2.在Application_Start中加上一行代码,也可以实现 GlobalConfiguration.Configurati