Struts2:Json插件_Ajax

lib中加入包

struts2-json-plugin-2.3.20.jar
commons-lang3-3.2.jar

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,焦点移开:

时间: 2024-10-25 13:10:56

Struts2:Json插件_Ajax的相关文章

struts2 json插件中属性的配置

root参数用于指定要序列化的根对象,如果省去这一配置,表示要序列化action中的所有属性 ignoreHierarchy 为false时表示要序列化根对象的所有基类 excludeProperties表示排除的序列化的属性 includeProperties表示哪些属性被序列化 excludeNullProperties表示是否去掉空值, 默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值. 之前我在看李刚的书的时候认为includeProperties和exclu

struts2 JSON 插件的使用

1. 导入包: json-lib-2.3-jdk15.jar struts2-json-plugin-2.3.15.3.jar 2. 在struts.xml中修改配置如下: <package name="default" namespace="/" extends="json-default"> <global-results> <result name="ajax" type="jso

struts2 json 输出日期格式不正确

struts2 输出json中 日期出现:2013-12-17T15:57:47 错误格式的数据 原因:struts2 json插件对日期的格式化有问题 解决方法:在实体类的日期的get方法上加注解:@JSON(format="yy-MM-dd HH:mm:ss") 例如: @JSON(format = "yy-MM-dd HH:mm:ss") public Date getFindtime() { return findtime; }

Struts2之—集成Json插件实现Ajax

   上篇博客介绍了Struts2中自定义结果集实现Ajax,也分析了它的缺点:这样自定义的结果集,写死了,不能做到客户端需要什么数据就传什么数据:Struts2之-自定义结果集实现ajax 本篇博客提出Struts2的集成Json插件,很好的解决了自定义结果集带来的问题. 一,引题 1,Json数据格式简介 因为JSON是脱离语言的理想的数据交换格式,所以它被频繁的应用在客户端与服务器的通信过程中,这一点是毋庸置疑的.而在客户端与服务器的通信过程中,JSON数据的传递又被分为服务器向客户端传送

struts2之json插件

1.引入json插件包 <!-- 引入struts2的json插件 -->     <dependency>         <groupId>org.apache.struts</groupId>         <artifactId>struts2-json-plugin</artifactId>         <version>${struts.version}</version>     </

Struts2 Convention插件的使用(4)使用@Action注解返回json数据

package com.hyy.action; import java.util.HashMap; import java.util.Map; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; imp

Struts2使用JSON插件实现异步刷新功能

1.说起这个Json插件实现异步刷新的功能折腾了我两天了,本想使用Juery来实现,可是在Jsp页面中始终无法获取json数据,最终无奈之下只能选择了最原始的方式. 2.首先是需要加载struts2-json-plugin-2.3.20.1.jar(因为我用的struts的版本是2.3.20.1)到项目中,接下来就是配置struts.xml配置文件了,而在这个过程中我有遇到一个非常烦恼的事,就是在我配置json的时候,需要继承json-default,始终都报错,这个问题已经在我之前的博客"SS

【Struts2】Json插件使用

一.使用步骤 1.1 引入依赖 1.2 在struts.xml文件中配置 一.使用步骤 1.1 引入依赖 <!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-json-plugin --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</arti

Android+struts2+JSON方式的手机开发(Login)

在手机的后台服务无论是调用WebService还是Http请求,多数都是采用Android的HttpClient实现相关的调用实现.本文实现Android+Struts2+JSON方式实现为手机前台提供服务. 涉及的知识点: 1.Struts2框架的搭建(包括Struts2的jSON插件) 2.Android前台访问Web采用HttpClient方式. 3.Android采用JSON的解析. 功能:模拟远程登录流程: 手机后台服务:由于采用Struts2的JSON响应格式,响应详细会自动转变为J