javascript代码实例教程-JSON插件使用

发布时间:2019-02-14 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JSON插件使用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 @H_126_0@ 14.4 使用JSON插件

14.4.1 JSON基础

JSON(JavaScript Object Natation),它是一种轻量级、基于文本、语言无关的数据交换格式,类似于XML,是一种结构化数据串行化的文本格式,常常用于服务器与JavaScript之间的数据交换上。

JSON是从ECMAScript语言标准衍生而来的,定义了一套简单的格式化规则,JSON可以描述四种简单的类型,包括字符串、数字、布尔值及和null;还可以描述两种结构化类型,包括对象和数组

当然,更多JSON具体的语法不是这里关注的重点,有需要的朋友请参见https://json.org/,在那里可以获取更多的JSON的知识。

14.4.2 JSON插件

为了更容易使用JSON,Struts2提供了JSON插件,这个插件提供了名为“json”的ResultTyPE,如果设置某个Result的类型为json,那么JSON插件会把这个Action对象序列化成为一个json格式的字符串,然后再向客户端返回这个字符串。

要使用JSON插件,只需要把struts2-json-plugin-2.1.8.1.jar文件拷贝到WEB-iNF/lib里面即可。

JSON插件提供了一些参数,供大家在有需要的时候选用,可以通过他们实现更精确的控制,基本的参数罗列如下:

  • excludeProperties:输出结果需要去除的属性值,支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式。如下示例代码就表示,user属性里面的password属性不会被序列化输出,代码如下:

    java代码: 查看复制到剪贴板打印
    1. user.password
    2. includePRoperties:输出结果中需要包含的属性值,支持正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。如下示例就表示输出user的所有属性,代码如下:

      java代码: 查看复制到剪贴板打印
      1. user.*
      2. root:根据ognl表达式取出你需要输出的结果的根对象,如下示例就表示输出user的name属性的值,代码如下:

        java代码: 查看复制到剪贴板打印
        1. user.name
          • excludeNullProperties:表示是否去掉空值, 默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值
          • ignoreHierArchy:表示是否忽略继承关系,默认值是true,也就是在输出的时候不会自动把父级对象序列化并输出。

            当然,JSON插件还有很多的参数,这里就不去一一罗列了,有兴趣的朋友请参见https://cwiki.apache.org/confluence/display/WW/JSON%20Plugin,哪里有详尽的参数说明。

            14.4.3使用JSON插件来实现Ajax

            沿用前面演示Ajax的示例,实现最常见的输入校验的功能,通过Ajax来判断输入的ID是否重复,并给出相应的提示信息。

            (1)Action的写法跟以前差不多,示例代码如下:

            java代码: 查看复制到剪贴板打印
            1. public class AjaxAction extends ActionSupport {
            2. private String account;
            3. private String password;
            4. private String msg;
            5. public String getAccount() {
            6. return account;
            7. }
            8. public void setAccount(String account) {
            9. this.account = account;
            10. }
            11. public String getPassword() {
            12. return password;
            13. }
            14. public void setPassword(String password) {
            15. this.password = password;
            16. }
            17. public String getMsg() {
            18. return msg;
            19. }
            20. public void setMsg(String msg) {
            21. this.msg = msg;
            22. }
            23. public String execute() throws Exception {
            24. //准备已经注册的数据,测试使用
            25. Set set = new HashSet();
            26. set.add("account1");
            27. set.add("account2");
            28. set.add("account3");
            29. if(set.contains(account)){
            30. msg = "输入不正确,请重新输入";
            31. }else{
            32. msg = "输入正确";
            33. }
            34. return this.SUCCESS;
            35. }
            36. }

              注意:Action的属性需要提供getter/setter方法,不能用public属性的方式进行值的对应,否则JSON插件是不会正确序列化属性值的。

              (2)struts.xML的配置有一些变化,首先是不再继承struts-default,而是改为继承json-default;其次result的type要设置为json,示例代码如下:

              java代码: 查看复制到剪贴板打印
              1. (3)页面也有一些变化,主要是在获取Action的返回值过后,需要通过eval方法来把json字符串造型成为一个对象,然后把这个对象中的msg属性的值设置到p中显示即可,示例代码如下:

                java代码: 查看复制到剪贴板打印
                1. <%@ page contentType="text/html; charset=gb2312"%>
                2. <script language="javascript">
                3. var myRequest;
                4. function t1(){
                5. //准备向后台传输的数据
                6. var account = document.getElementById("account").value;
                7. //Ajax
                8. myRequest = new ActiveXObject("Msxml2.XMLHTTP");
                9. myRequest.onreadystatechange = t2;
                10. myRequest.open("GET","ajaxAction.action?account="+account,true);
                11. myRequest.send(null);
                12. }
                13. function t2(){
                14. if(myRequest.readyState==4){
                15. VAR ret = myRequest.responseText;
                16. //把json造型成对象
                17. var obj = eval("("+ret+")");
                18. //后续处理,把对象的msg设置到p中显示出来
                19. document.all("myDiv").innerHTML = obj.msg;
                20. }
                21. }
                22. </script>
                23. 新用户注册
                  用户帐号 *

                  用户密码:
                  重复密码:
                24. 去运行看看,效果应该跟前面AJAX演示的效果是一样的。

                  私塾在线网站原创

                  觉得可用,就经常来吧! 脚本宝典 欢迎评论哦!&nbsp;js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

                  脚本宝典总结

                  以上是脚本宝典为你收集整理的javascript代码实例教程-JSON插件使用全部内容,希望文章能够帮你解决javascript代码实例教程-JSON插件使用所遇到的问题。

                  如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

                  本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
                  如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。