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>





你可能感兴趣的:(jquery,json,Ajax,struts,db2)