您的位置:首页 > 编程语言 > Java开发

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

2017-08-02 19:25 567 查看

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息