Struts2:Json插件_Ajax


lib中加入包

struts2-json-plugin-2.3.20.jar

json插件有自己的过滤器、返回类型

WebRoot下新建js文件夹

放入json2.js

json2.js是一个著名开源js库,提供了json的序列化和反序列化方法
JSON.stringify:L353:把Json对象转换成字符串    
JSON.parse:    L400:把字符串转成Json对象    
http://www.json.org/                
有    JavaScript:            
        JSON.        
        json2.js.        
        clarinet.        
        Oboe.js.    

ajaxUtil.js自己封装的一个Ajax工具类

// 参考:XMLHttpRequest 对象                                        
// http://www.w3school.com.cn/xml/xml_http.asp                                        
xmlhttp = null;                                        
if (window.XMLHttpRequest) {// code for all new browsers                                        
    xmlhttp = new XMLHttpRequest();                                    
} else if (window.ActiveXObject) {// code for IE5 and IE6                                        
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");                                    
}                                        
function ajaxRequest(url, param, callBackFunction) {                                        
    try {                                    
                                        
        if (xmlhttp != null) {                                
            var sUrl = url + '?date=' + new Date();                            
            var oRequest = new XMLHttpRequest();                            
            oRequest.onreadystatechange = function() {                            
                if (oRequest.readyState == 4) {                        
                    callBackFunction(oRequest);                    
                }                        
            };                            
                                        
            oRequest.open('POST', sUrl);                            
            oRequest.setRequestHeader("Content-Type", "application/json");                            
            oRequest.send(param);                            
        }                                
    } catch (e) {                                    
                                        
    }                                    
}                                        
    

index.jsp核心代码:

<script type="text/javascript" src="js/ajaxUtil.js"></script>
<script type="text/javascript" src="js/json2.js"></script>
<script type="text/javascript">
    function checkuser(o) {

        var url = "testjson"
        var obj = {
            "uname" : o.value
        }
        // 借助json2.js:Json对象→字符串,以便发送
        var params = JSON.stringify(obj);
        // 借助ajaxUtil.js:发送Ajax请求
        ajaxRequest(url, params, ajaxCallBack);

    }

    // Ajax回调函数
    function ajaxCallBack(oRequest) {
        // 借助json2.js:字符串→Json对象,以便解析
        var obj1 = JSON.parse(oRequest.responseText);
        document.getElementById("msgdiv").innerHTML = obj1.msg1;
    }
</script>
    <p id="msgdiv"></p>
    <s:form action="" name="test" method="post">
        <s:textfield name="uname" onblur="checkuser(this)" />
        <s:submit></s:submit>
    </s:form>

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.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.configuration.xml.reload" value="true" />
    <!-- 不再继承struts-default,而是json-default -->
    <package name="p1" namespace="/" extends="json-default">
        <action name="testjson" class="org.ah.s2.C1">
            <!-- 配置json拦截器,在struts2-json-plugin-2.3.20.jar中 -->
            <interceptor-ref name="json" />
            <result type="json">
                <!-- root:固定值,返回给客户端的对象 -->
                <!-- data:Action中的一个属性 -->
                <param name="root">data</param>
                <!-- 当返回结果有空值时,不包含进来 -->
                <!-- 这里AhJsonBean.msg2不包含进来 -->
                <param name="excludeNullProperties">true</param>
            </result>
        </action>
    </package>
</struts>

AhJsonBean:

package org.ah.s2;

/**
 * Json用的Java Bean
 */
public class AhJsonBean {
    private String msg1;
    private String msg2;

    public String getMsg1() {
        return msg1;
    }

    public void setMsg1(String msg1) {
        this.msg1 = msg1;
    }

    public String getMsg2() {
        return msg2;
    }

    public void setMsg2(String msg2) {
        this.msg2 = msg2;
    }

}

Action:

package org.ah.s2;

import com.opensymphony.xwork2.ActionSupport;

public class C1 extends ActionSupport {
    private String uname;

    // -----------------------------
    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    // -----------------------------
    // <param name="root">data</param>
    // 不需要setter,需要getter,需要new
    private AhJsonBean data;

    public AhJsonBean getData() {
        return data;
    }

    // -----------------------------
    @Override
    public String execute() throws Exception {
        // 需要new一个Json的对象
        data = new AhJsonBean();

        if ("admin".equals(uname)) {
            data.setMsg1("这是管理员");
        } else {
            data.setMsg1("OK!");
        }
        return ActionSupport.SUCCESS;
    }

}

运行一下:输入aa,焦点移开:

优质内容筛选与推荐>>
1、在Infopath中用C#创建复合控件
2、python出现Non-ASCII character '\xe7' in file ex6.py on line 1, but no encoding declare错误
3、Import and Export vCard item(转)
4、[Leetcode]160. Intersection of Two Linked Lists
5、struts2.1之后的Junit plugin使用


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn