• 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>
  • 相关阅读:
    Swift与OC混合开发
    Swift继承
    Swift方法
    Swift属性
    Swift闭包
    Swift结构体和类
    Swift函数
    Swift基础语法
    Xcode使用篇-重新安装Xcode
    iOS组件化开发-CocoaPods安装
  • 原文地址:https://www.cnblogs.com/kailing-con/p/4281705.html
Copyright © 2020-2023  润新知