struts2下实现的json传递list,object。

必须的jar:

java bean:

package upload.progress.action;

public class music {
    private String name;
    private String singer;
    private String source;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSinger() {
        return singer;
    }
    public void setSinger(String singer) {
        this.singer = singer;
    }
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    

}

struts2.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>
    <!-- 
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <include file="example.xml"/>



    <package name="default" namespace="/" extends="struts-default">
        <default-action-ref name="index" />
        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>
     -->

     <package name="default" namespace="/Fileupload" extends="struts-default">
        
        <action name="practice" class="action.PracticeAction" method="practice_one">
            <result type="redirect" name="success">
                /js/uploadify.jsp
            </result>
        </action>
      
    </package>
    <!-- Add packages here -->
    <package name="ajax" namespace="/ajax" extends="json-default">
        
        <action name="ajaxTest1" class="action.ajaxTest1" method="ajaxTest">
            <result type="stream">
                <param name="contentType">text/html</param>
                <param name="inputName">inputStream</param>
                
            </result>
        </action>
        <action name="json" class="upload.progress.action.jsonTest1" method="returnMessage">
            <result name="success" type="json"></result>
        </action>
        <action name="jsonMusic" class="upload.progress.action.jsonTest1" method="returnMusic">
            <result name="success" type="json"></result>
        </action>
         <action name="jsonMusicList" class="upload.progress.action.jsonTest1" method="returnMusicList">
            <result name="success" type="json">
                <param name="root">musicList</param>
            </result>
        </action>
    </package>

</struts>

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
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 'jsonTest1.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">
    -->
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
    $(function(){
    $("#showMessage").click(function(){
    
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "ajax/json.action",
            success: function(data){
                $("#message").html("<font color='red'>"+data.message+"</font>");
            }
        });
        });
        
        $("#showMusic").click(function(){
                $.ajax({
                    type : "POST",
                    dataType : "json",
                    url : "ajax/jsonMusic.action",
                    success : function(data){
                        $.each(data,function(i,item){
                            if(item!=null){
                                alert(item.name);    
                            }
                        })
                    }
                });
            });
    
    
    $("#showList").click(function(){
                $.ajax({
                    type : "POST",
                    dataType : "json",
                    url : "ajax/jsonMusicList.action",
                    success : function(data){
                        $.each(data,function(i,item){
                            if(item!=null){
                            alert(item.name);
                            }
                        })
                    }
                });
            });
    });
</script>
  </head>
  
  <body>
    <table align="center">
        <tr>
            <td id="showMessage">Message</td>
            <td id="showMusic">showMusic</td>
            <td id="showList">showList</td>
        </tr>
        
    </table>
    <div id="message"></div>
  </body>
</html>

action:

package upload.progress.action;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;

import com.opensymphony.xwork2.ActionSupport;

public class jsonTest1 extends ActionSupport {
    /**
     * 处理json的action
     */
    private static final long serialVersionUID = -1519192049194890338L;
    private String message;
    private music Music;
    private List<music> musicList;
    
    public String returnMessage(){
        System.out.println("json invoking");
        message="json 字符串";
        return SUCCESS;
    }

    public String returnMusic(){
        Music =new music();
        Music.setName("忘情水");
        Music.setSinger("刘德华");
        Music.setSource("百度");
        return SUCCESS;
    }
    public String returnMusicList(){
        musicList=new ArrayList<music>();
        music Music1 =new music();
        Music1.setName("忘情水1");
        Music1.setSinger("刘德华1");
        Music1.setSource("百度1");
        
        music Music2 =new music();
        Music2.setName("忘情水2");
        Music2.setSinger("刘德华2");
        Music2.setSource("百度2");
        
        music Music3 =new music();
        Music3.setName("忘情水3");
        Music3.setSinger("刘德华3");
        Music3.setSource("百度3");
        musicList.add(Music1);
        musicList.add(Music2);
        musicList.add(Music3);
        
        return SUCCESS;
    }
    
    public String jsonArray(){
        List<String> list=new ArrayList<String>();
        JSONArray jsonArray=new JSONArray(list);
        
        return SUCCESS;
    }
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public music getMusic() {
        return Music;
    }

    public void setMusic(music music) {
        Music = music;
    }

    public List<music> getMusicList() {
        return musicList;
    }

    public void setMusicList(List<music> musicList) {
        this.musicList = musicList;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }



}

使用流的方式:

action:

package action;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import Util.HibernateUtil;

import com.opensymphony.xwork2.ActionSupport;

public class ajaxTest1 extends ActionSupport {
    /**
     * 判断姓名是否存在
     */
    private static final long serialVersionUID = 1L;
    private InputStream inputStream;
    private String name;
    private String location;
    @SuppressWarnings("unchecked")
    public String ajaxTest() throws UnsupportedEncodingException{
        if(name.equals("")){
            inputStream=new ByteArrayInputStream("姓名不可以是空值哦。".getBytes("utf-8"));
            System.out.println("AJAX invoing-------------name="+name);
        }else{
            //inputStream=new ByteArrayInputStream("姓名可以使用".getBytes("utf-8"));
            SessionFactory sessionFactory= HibernateUtil.getSessionFactory();
            Session session=sessionFactory.getCurrentSession();
            Transaction tr= session.beginTransaction();
            String hql="from domain.user where name='"+name+"' ";
            Query query=session.createQuery(hql);
            List<domain.user> list=query.list();
            //System.out.println(list.get(0).getName());
            
            if(!list.isEmpty()){
                inputStream=new ByteArrayInputStream("姓名已存在。".getBytes("utf-8"));
            }else{
                inputStream=new ByteArrayInputStream("姓名可以使用。".getBytes("utf-8"));
            }
            session.clear();
            session.flush();
            tr.commit();
        }
        return SUCCESS;
    }
    public InputStream getInputStream() {
        return inputStream;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
    public static long getSerialversionuid() {
        return serialVersionUID;
    }

}

jsp:

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
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>ajaxTest1</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="jquery.min.js"></script>
<script type="text/javascript" src="../js/jquery.js"></script>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">

    $(function(){
    alert();
    $("#examine").focusout(function(){
    
        test();
    });
    
    
});


function test(){
    $.ajax({
            type: "POST",
            url: "ajax/ajaxTest1.action",
             data: "name="+$("#examine").val(),
             success: function(msg){
                 alert( "Data Saved: " + msg );
            }
            
             
        });
        }
</script>

  </head>
  
  <body>
  <form action="" method="post"  enctype="multipart/form-data"></form>
  <table>
      <tr>
          <td>姓名:</td>
          <td></td>
          <td>密码:</td>
      </tr>
      <tr>
          <td> <input name="username" type="text" maxlength="40" id="examine"></td>
          <td></td>
          <td> <input name="password" type="password" maxlength="40" ></td>
      </tr>
  </table>
 
  </body>
</html>
原文地址:https://www.cnblogs.com/liusijia/p/4859109.html