最近做项目的时候,需要用到JSON和jQuery进行异步数据交换
在网上查了好久,搞了一天多才写出来,所以拿出来和大家分享一下
好了,废话到此为止
1. 搭建Struts2运行环境
引入Struts2所需的jar包,另外还要引入一个JSON插件包:struts-2.3.4.1/lib/(前面是位置)struts2-json-plugin-2.3.4.1.jar
2. 编写web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Struts2核心Filter -->
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
3. struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 设为开发模式,是出错提示信息更详细 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 当配置文件修改时,自动重新加载该配置文件 -->
<constant name="struts.configuration.xml.reload" value="true"></constant>
<!-- Struts2使用JSON和jQuery进行数据交互 -->
<!--
这里要注意的是:1. package必须继承json-default 2. result的类型必须是json
-->
<package name="json" namespace="/json" extends="json-default">
<action name="JsonAction" class="org.action.JsonAction">
<result type="json"></result>
</action>
</package>
</struts>
4. Person.java
public class Person{
// 姓名
private String name;
// 密码
private String password;
//getter/setter略
}
5. JsonAction.java
package org.action;
import java.util.ArrayList;
import java.util.List;
import org.model.Person;
import com.opensymphony.xwork2.ActionSupport;
public class JsonAction extends ActionSupport
{
//Person对象
private Person person;
//爱好
private String hobby;
//集合测试
private List<String> dragons = new ArrayList<String>();
@Override
public String execute() throws Exception
{
//为Action的属性赋值,方便在JSP页面获取值
this.hobby = "行侠仗义";
this.dragons.add("jQuery");
this.dragons.add("Json");
this.person.setName("萧峰");
this.person.setPassword("123");
System.out.println("执行execute()方法");
return super.execute();
}
//getter/setter略
}
6. index.jsp(记得引入jQuery库)
<!-- import jQuery library -->
<script type="text/javascript" src="jQuery/jquery-1.9.0.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
$("button#btn").click(function(e) {
//通过data可以直接访问Action中的属性
$.post("json/JsonAction", function(data){
alert("姓名:" + data.person.name +
"\n密码:" + data.person.password +
"\n爱好:" + data.hobby +
"\n集合:" + data.dragons
);
});
});
});
</script>
<body>
<button type="button" id="btn">JSON</button>
</body>
这个程序不是很难,解释我都写在代码里了,这只是初级的使用方法,不过可以满足进行简单的数据交换了
我的理解是:使用JSON进行数据交换其实就是读取Action类里可序列化的属性(这个属性必须要有getter方法)
呵呵,就这样了
如果有错的,请大家放心指正,共同进步。
更详细的内容可以查看下面链接