struts2发送json数组,js使用ajax接收。

来源:互联网 发布:复数矩阵的qr分解例题 编辑:程序博客网 时间:2024/06/05 16:09

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数组(吧)


原创粉丝点击