zoukankan      html  css  js  c++  java
  • [转] 关于Struts-JSON配置(详解带实例struts2的json数据支持)

    关于Struts-JSON的提高开发效率


    一、JSON是什么?

    :JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解

    析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C , C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

    二 、struts2对于JSON有什么支持?

    :struts2提供了一个struts2-json-plugin.jar 用于支持JSON的使用。当我们在struts2中使用JSON的时候

    必须导入struts2-json-plugin.jar

    并且需要一下几点:

    1.<package name="struts2" extends="json-default">

           //必须是继承struts2-json-plugin.jar中struts-plugin.xml文件中的定义的json-default

           /* struts2-json-plugin.jar中struts-plugin.xml配置信息:

             <struts>

             <package name="json-default" extends="struts-default">

                               <result-types>

                               <result-type name="json" class="org.apache.struts2.json.JSONResult"/>

                               </result-types>

                               <interceptors>

                               <interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/>                                        </interceptors>

               </package>

            </struts>

           通过配置信息我们可以知道:

              1.json-default其实是继承了struts-default的

              2.定义了一个name为json的返回类型和一个name为json的拦截器 */

             2.<action name="*" class="*"><result name="success" type="json"/></action>//我们需要将result

             的 返回类型定义为json

    三、关于JSON在struts.xml中的一些属性的功能。

    Java代码  收藏代码
    1. <action name="*"  class="*">  
    2.           
    3.     <result name="success" type="json">  
    4.    <param name=""></param>//关于对JSON的一些定义  
    5.    /*excludeProperties   //代表排除Action中的哪些属性,排除多个属性时,使用逗号进行分隔(即不需要序列化的属性) 
    6.    例:<param name="excludeProperties">age</param>  排除getAge()这个方法 为什么是排除这个方法下面详解 
    7.                      
    8.       includeProperties   //代表包含Action中的哪些属性,包含多个属性是,使用逗号进行分隔(即需要序列化的属性) 
    9.    例:<param name="includeProperties">address</param>包含getAddress()这个方法 为什么是包含这个方法下面详解 
    10.                      
    11.      excludeNullProperties //代表排除Action中属性值为空的字段 
    12.    例:<param name="excludeNullProperties">true</param> 使用true/false 默认为false(即包含属性值为null的字段) 
    13.                      
    14.     root  //代表从哪里开始序列化 
    15.    例:<param name="root">person</param> person对应的可以是一个属性,也可以是一个对象,也可以是一个集合 
    16.      //当在这里定义后,只会将person进行序列化,如果person是一个对象,则会将person对象中所有的getter方法都进行序列化 
    17.                      
    18.     注意:如果相同属性同时定义了excludeProperties和includeProperties 
    19.         那么excludeProperties的优先级要高,因此不对 
    20.     该属性进行序列化 
    21.         */  
    22.     </result>  
    23. </action>  

      四、关于JSON在Action对象中注解的使用。

    :对于JSON的注解主要有一下几个属性可以定义
    name:指定序列化的时候对应的名称
    /*
     
      例:@JSON(name = "myname") 则在客户端接收到的JSON中UserName属性对应的地方为 :
                         {myname:"张三"} 以前的则是{username:"张三"}
         public String getUsername() {
    return username;
         }
    */
    serialize:对该方法进行序列化  true/false
    /*
    例:@JSON(serialize=true) 对该方法序列化,如果为false则不进行序列化
    public String getUsername() {
    return username;
    }
    */
    deserialize:不对该方法进行序列化  true/false
    /*
    例:@JSON(deserialize=true) 不对该方法序列化,如果为false则进行序列化
    public String getUsername() {
    return username;
    }
    */
    format:设置JSON对该方法的转换方式,一般用于对时间进行转换 
    /*
    例:@JSON(format="yyyy-MM-dd")  则客户端接收的JSON中date对应的值为:
                                                  {date:"2011-10-2"}
    public Date getDate() {
    return date;
    }
    */

    五、具体的实例:

    Java代码  收藏代码
    1. Action:  
    2.     package org.viancent.action;  
    3.   
    4.     import java.util.Date;  
    5.     import org.apache.struts2.json.annotations.JSON;  
    6.     import com.opensymphony.xwork2.ActionSupport;  
    7.     public class GetJsonAction extends ActionSupport {  
    8.           
    9.         private String username;  
    10.         private String password;  
    11.         private int age;  
    12.         private Date date;  
    13.   
    14.         @JSON(serialize = false)  
    15.         public String getUsername() {  
    16.             return username;  
    17.         }  
    18.   
    19.         public void setUsername(String username) {  
    20.             this.username = username;  
    21.             }  
    22.           
    23.         @JSON(name="mypassword")  
    24.         public String getPassword() {  
    25.             return password;  
    26.         }  
    27.   
    28.         public void setPassword(String password) {  
    29.             this.password = password;  
    30.         }  
    31.   
    32.         public int getAge() {  
    33.             return age;  
    34.         }  
    35.   
    36.         public void setAge(int age) {  
    37.             this.age = age;  
    38.         }  
    39.           
    40.         @JSON(format="yyyy-MM-dd")  
    41.         public Date getDate() {  
    42.             return date;  
    43.         }  
    44.   
    45.         public void setDate(Date date) {  
    46.             this.date = date;  
    47.         }  
    48.   
    49.         @Override  
    50.         public String execute() throws Exception {  
    51.             this.setDate(new Date());  
    52.             this.setAge(10);  
    53.             this.setPassword("world");  
    54.             this.setUsername("hello");  
    55.             return SUCCESS;  
    56.         }  
    57.     }  

      struts.xml

    Java代码  收藏代码
    1. <struts>  
    2.     <package name="struts2"  extends="json-default">  
    3.     //这里一定要继承json-default  
    4.         <action name="getjsons" class="org.viancent.action.GetJsonAction">  
    5.             <result name="success"  type="json">  
    6.             //这里一定要定义type属性为json  
    7.                 <param name="excludeProperties">age</param>       
    8.             //排除getAge()方法            
    9.             </result>  
    10.         </action>  
    11.   
    12.     </package>  
    13. </struts>   

      JSP:

    Java代码  收藏代码
    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    2.   
    3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    4. <html>  
    5.     <head>  
    6.         <script type="text/javascript" src="WEB-JS/jquery-1.5.1.js"></script>   //使用jquery一定要导入js  
    7.           
    8.                 <script type="text/javascript"> //使用jquery实现异步提交  
    9.                     function getJson() {  
    10.                         $.post(  
    11.                             "/struts2/getjsons.action",{},function(returnedData,status)  
    12.                             {  
    13.                                 if("success"==status)  
    14.                                 {  
    15.                                     alert(returnedData);  
    16.                                 }  
    17.                             }  
    18.                         )  
    19.                     }  
    20.                 </script>  
    21.     </head>  
    22.     <body id="theBody">  
    23.         <input type="button" value="GetJson" onclick="getJson();">  
    24.   
    25.     </body>  
    26. </html>  

      得到的结果为:{"date":"2011-03-21","mypassword":"world"} 

    //使用浏览器的bug工具查看 alert(returnedData);弹出来的只是 [object,Object]
    //这里我们可以看见password的名称已经改为mypassword了 而设定那么的data属性,名称则没有变
     
  • 相关阅读:
    字符串的基本操作
    PHP & Delphi 語法
    Delphi项目构成之单元文件PAS
    Delphi项目构成之项目文件DPR
    Delphi项目的构成
    關於那我的編程歷史..
    點擊Button,在Label1顯示HelloWorld!。
    開博客了, 因為搞Delphi 開發的關於Delphi學習
    Java 基础知识(一)
    关于多线程对于全局变量的资源竞争问题
  • 原文地址:https://www.cnblogs.com/ZhuRenWang/p/4672686.html
Copyright © 2011-2022 走看看