关于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. <result name="success" type="json">
  3. <param name=""></param>//关于对JSON的一些定义
  4. /*excludeProperties   //代表排除Action中的哪些属性,排除多个属性时,使用逗号进行分隔(即不需要序列化的属性)
  5. 例:<param name="excludeProperties">age</param>  排除getAge()这个方法 为什么是排除这个方法下面详解
  6. includeProperties   //代表包含Action中的哪些属性,包含多个属性是,使用逗号进行分隔(即需要序列化的属性)
  7. 例:<param name="includeProperties">address</param>包含getAddress()这个方法 为什么是包含这个方法下面详解
  8. excludeNullProperties //代表排除Action中属性值为空的字段
  9. 例:<param name="excludeNullProperties">true</param> 使用true/false 默认为false(即包含属性值为null的字段)
  10. root  //代表从哪里开始序列化
  11. 例:<param name="root">person</param> person对应的可以是一个属性,也可以是一个对象,也可以是一个集合
  12. //当在这里定义后,只会将person进行序列化,如果person是一个对象,则会将person对象中所有的getter方法都进行序列化
  13. 注意:如果相同属性同时定义了excludeProperties和includeProperties
  14. 那么excludeProperties的优先级要高,因此不对
  15. 该属性进行序列化
  16. */
  17. </result>
  18. </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. import java.util.Date;
  4. import org.apache.struts2.json.annotations.JSON;
  5. import com.opensymphony.xwork2.ActionSupport;
  6. public class GetJsonAction extends ActionSupport {
  7. private String username;
  8. private String password;
  9. private int age;
  10. private Date date;
  11. @JSON(serialize = false)
  12. public String getUsername() {
  13. return username;
  14. }
  15. public void setUsername(String username) {
  16. this.username = username;
  17. }
  18. @JSON(name="mypassword")
  19. public String getPassword() {
  20. return password;
  21. }
  22. public void setPassword(String password) {
  23. this.password = password;
  24. }
  25. public int getAge() {
  26. return age;
  27. }
  28. public void setAge(int age) {
  29. this.age = age;
  30. }
  31. @JSON(format="yyyy-MM-dd")
  32. public Date getDate() {
  33. return date;
  34. }
  35. public void setDate(Date date) {
  36. this.date = date;
  37. }
  38. @Override
  39. public String execute() throws Exception {
  40. this.setDate(new Date());
  41. this.setAge(10);
  42. this.setPassword("world");
  43. this.setUsername("hello");
  44. return SUCCESS;
  45. }
  46. }

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. </package>
  12. </struts>

JSP:

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

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

//使用浏览器的bug工具查看 alert(returnedData);弹出来的只是 [object,Object]
//这里我们可以看见password的名称已经改为mypassword了 而设定那么的data属性,名称则没有变
 

[转] 关于Struts-JSON配置(详解带实例struts2的json数据支持)的更多相关文章

  1. log4j.properties配置详解与实例

    log4j.properties配置详解与实例 第一步:加入log4j-1.x.x.jar到lib下. 第二步:在工程的src下下建立log4j.properties.内容如下: #OFF,syste ...

  2. Apache的配置详解 带图

    对Apache 的 Http.conf 各项配置详解 1.01 ServerRoot 配置 [ServerRoot "" 主要用于指定 Apache 的安装路径,此选项参数值在安装 ...

  3. spring-mvc注解(mvc:annotation-driver,JSON,配置详解)

    一.DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 的使用已经过时! spring 3.1 开始我们应该用 Reque ...

  4. struts.xml配置详解 内部资料 请勿转载 谢谢合作

    1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件 ...

  5. struts.xml配置详解

    struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用includ ...

  6. struts.xml 配置详解

    struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用includ ...

  7. [转] struts.xml配置详解

    转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html struts.xml是我们在开发中利用率最高的文件,也是Struts ...

  8. Struts2笔记——struts.xml配置详解

    访问HelloWorld应用的路径的设置 * 在struts1中,通过<action path=“/primer/helloWorldAction.action”>节点的path属性指定访 ...

  9. struts.properties配置详解

    Struts 2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等.除此之外,Struts 2框架还包含     st ...

随机推荐

  1. 无key值的json数组解析

    [    [        {            "cartId": 9223,            "factoryId": 143,          ...

  2. 自己看之区间DP

    //菜鸡制作,看的时候可能三目运算符略烦;;; 区间DP入门题:Brackets 地址:http://59.77.139.92/Problem.jsp?pid=1463 分析(对区间DP的代码原理进行 ...

  3. python基础===数据伪造模块faker

    介绍文档: https://pypi.org/project/Faker/ https://faker.readthedocs.io/en/latest/ https://faker.readthed ...

  4. C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法

    本文转载自:https://blog.csdn.net/qq_33573235/article/details/79530792 1. 二维数组和指针 要用指针处理二维数组,首先要解决从存储的角度对二 ...

  5. 转:google测试分享-分层测试

    原文: http://blog.sina.com.cn/s/blog_6cf812be0102vctg.html 上一次分享了google测试分享-SET和TE,有一些自动化测试的细节没有说清楚,那这 ...

  6. 动手编写TCP服务器系列之一:日志文件

    前言 在几个月之前,笔者想自己实现一个性能比较良好的基于tcp的服务器.于是断断续续写了个把月,因为还需要找工,还有论文什么的.拖了这么久.现在开辟这样的一个博客,我想记录下自己的思路,也和大家分享自 ...

  7. 关于ZIP自动打包的进一步进化思路

    http://blog.163.com/long200259@126/blog/static/11288755920093120529157/

  8. Python--re模块的findall等用法

    1)正则表达式含义 . # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符.空格 ...

  9. Validating a Model

  10. Socket编程(一):建立与客户端的连接并接受数据

    我们这里利用Socket在模拟一个客户端与服务器通信,其实客户端与服务端通信就像人与人打电话一样,想要给一个人打电话,我们首先必须要有手机,必须知道对方的手机号码,这里Socket就好比一部手机,而短 ...