Json JQuery Struts2

Struts2.2 有自带的 json plugin,但在 2.0.14中好像没有,所以在网上找了些资料整理了一下.

1.struts2.0.14核心包
2.jsonplugin-0.32.jar
http://code.google.com/p/jsonplugin/downloads/list
3.jquery jquery-1.4.2.min.js

下面的demo简单的实现了通过jquery访问action,action返回json格式对象,需要注意的地方:
1.将action的返回类型设置为 json, package 继承 json-default
设置返回类型为json后,struts2的拦截器会自动将返回的数据转换为json对象.

1. JSONAction.java


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package action;
import com.googlecode.jsonplugin.JSONException;
import com.googlecode.jsonplugin.JSONUtil;
import com.opensymphony.xwork2.ActionSupport;
import entity.Member;
import java.util.ArrayList;
import java.util.List;

/**
*
* @author db2
*/
public class JSONAction extends ActionSupport{

//在执行完action后,应为在struts.xml中配置的 返回 类型为json,所以
// member在经过strust2的拦截器时会被转换为 json格式,在页面上可以直接以Json对象使用
private Member member;
private String result;
private String memberId;

public Member getMember() {
return member;
}

public void setMember(Member member) {
this.member = member;
}

public String getResult() {
return result;
}

public void setResult(String result) {
// System.out.println("set result: " + result);
this.result = result;
}

public String getMemberId() {
return memberId;
}

public void setMemberId(String memberId) {
this.memberId = memberId;
}



//当用户存在时,反回一个Json 格式的 member, 否则返回 false
public String execute() throws JSONException{
List<Member> members = new ArrayList<Member>();
members.add(new Member(123,123,"member1"));
members.add(new Member(456,456,"member2"));

boolean flag = false;
for(Member m:members){
if(Long.toString(m.getId()).equals(memberId)){

// 1.将m转换成Json格式字符串,的页面上取值是要先把resutl转换为 Josn Object
this.result=JSONUtil.serialize(m);
System.out.println("result member: " + result);

// 2.设置Member为 member,与 this.result=JSONUtil.serialize(m); 的作用一样
setMember(m);
// 1 与 2 的作用都是一样的, 任选一个就可以了

flag = true;
break;
}
}

if(!flag){
result ="false";
}
return SUCCESS;
}

}




2. struts.xml


<!--将返回结果设置成json, package 需要继承 json-default-->
<package name="default2" extends="json-default">
<action name="jsonTest" class="action.JSONAction">
<result type="json"/>
</action>
</package>


3.index.jsp



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>index.jsp</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">

$(document).ready(function(){
$("#button1").click(function (){
var member_id = $("#member_id").val();
// alert(member_id);
$.ajax({
url: "jsonTest.action",
type:"post",
data:"memberId="+member_id,// 传入JSONAction 的参数
cache:false,
success: function(bd){
//从返回的结果中读取member
if(bd.result != "false"){
alert("MemberId from member: " + bd.member.memberId);
//直接打印result 结果为 json格式的字符串
alert("result: " + bd.result);
var obj=eval("("+bd.result+")");
alert("Member from result: memberId:" +obj.memberId+" memberName: "+obj.memberName);
}else{
alert("member 不存在");
}

}
});
});
});
</script>

</head>
<body>

输入MemberId查询: <input type="text" id="member_id" value="123"/>
<input type="button" id="button1" value="提交"/>

</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值