1. 程式人生 > >struts2傳送json陣列,js使用ajax接收。

struts2傳送json陣列,js使用ajax接收。

1、使用到的jar包

1、commons-lang.jar

2、commons-beanutils.jar

3、commons-collections.jar

4、commons-logging.jar

5、ezmorph.jar

6、json-lib-2.2.2-jdk15.jar

7、struts-json-plugin.jar(如果不用struts2就不用這個)

2、java檔案

package meiko.server;

import net.sf.json.JSONArray;
import com.opensymphony.xwork2.ActionSupport;

public class GetAllTask extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JSONArray allTaskJson;// 返回值
	private String taskPage;// 請求的頁碼

	public JSONArray getAllTaskJson() {
		return allTaskJson;
	}

	public void setAllTaskJson(JSONArray allTaskJson) {
		this.allTaskJson = allTaskJson;
	}

	public String getTaskPage() {
		return taskPage;
	}

	public void setTaskPage(String taskPage) {
		this.taskPage = taskPage;
	}

	public String getAllTask() {

		String respnse = "[{a:1,b:2,c:3},{a:2,b:3,c:4},{a:3,b:4,c:5}]";
		allTaskJson = JSONArray.fromObject(respnse);
		
		return SUCCESS;
	}

}

本例中,GetAllTask類中需要定義兩個全域性變數(均為private)。

其中一個為allTaskJson與struts.xml中的返回值同名。當方法呼叫完畢後,將該allTaskJson的內容返回給客戶端。另外一個為taskPage,用於獲取客戶端傳送過來的引數。

這兩個全域性變數都要擁有get/set方法。

*在方法中照java的方式完成各種資料的處理,只需要明確從客戶端來的輸入和返回給客戶端的輸出即可。

3、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>
	<package name="Function" extends="struts-default,json-default">
		<action name="getAllTask" class="meiko.server.GetAllTask"
			method="getAllTask">
			<result name="success" type="json">
				<param name="root">allTaskJson</param>
			</result>
		</action> 
	</package>
</struts>

<package name="Function"------並沒有什麼用,可隨便寫。

<package ... extends="struts-default,json-default">------前面的內容為預設內容,需要返回json時加上json-default。

<action name="getAllTask"------在ajax中呼叫時用到的名字。

<action ... class="meiko.server.GetAllTask"------方法所在類的完整路徑(包名+類名)

<action ... method="getAllTask">------類中定義的方法名。

<result name="success" type="json">------預設success,type為返回型別,有固定幾個type,按需百度。

<param name="root">allTaskJson</param>------型別不同param的name也不同,name似乎也有對應的固定值,具體百度。allTaskJson為返回值,與類中定義的用於返回的全域性變數一致。

Web.xml的內容使用固定寫法即可,沒什麼要改動的。

4、ajax呼叫struts的介面

$.ajax({
        type: "GET",
        dataType: "json",
        url:"getAllTask?taskPage="+taskPage;
        success: function (data) {
            //data為json陣列格式,可以直接呼叫。
        },
        error: function () {
            alert("任務列表查詢失敗");
        }
    });

getAllTask為struts.xml中設定的,?後為要輸入的引數,taskPage即java檔案中的一個全域性變數。

如果不需要輸入引數,則java檔案中不需要taskPage引數,此處url也改為簡單的"getAllTask"即可。

釋出成功後也可直接通過瀏覽器訪問,如圖所示,是標準的json陣列(吧)