关于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. 【技术分享】ReBreakCaptcha:利用谷歌来破解谷歌的验证码

    概述 从2016年开始,我就在琢磨寻找一种新的绕过谷歌验证码v2的方法会有多难,如果这种方法能够适用于任何环境而不仅仅是针对特定的案例,那这种方法将是非常理想的.接下来我将向你介绍ReBreakCap ...

  2. PHP缓存加速插件 XCache 、 ZendOpcache 安装

    PHP缓存原理 当客户端请求一个PHP程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码(OperateCode,简称opcode)文件,该文件是PHP代码的一种二进制表示方式.默 ...

  3. curl基于URL的文件传输工具

    简介 cURL是一款开源的基于URL的文件传输工具,支持HTTP.HTTPS.FTP等协议,支持POST.cookie.认证.扩展头部.限速等特性. curl命令用途广泛,比如下载.发送http请求. ...

  4. Lynx以纯文本的形式下载网页

    Lynx是一款基于命令行的web浏览器 [root@test88 ~]# yum install lynx -y [root@test88 ~]# lynx www.baidu.com 以纯文本的形式 ...

  5. java基础14 多态(及关键字:instanceof)

    面向对象的三大特征: 1.封装   (将一类属性封装起来,并提供set()和get()方法给其他对象设置和获取值.或者是将一个运算方法封装起来,其他对象需要此种做运算时,给此对象调用) 2.继承   ...

  6. IT行业经典面试技巧及方法思路。

    问题1:为什么从上家公司离职?”能说说原因吗? 首先,作为一个从事招聘的HR,并不认为追问面试者为什么从上一家公司离职是个明智的做法起码不应该在面试一开始就抛出这个问题,一个较为明显的原因是因为这会引 ...

  7. java经典面试题大全

    基本概念 操作系统中 heap 和 stack 的区别 什么是基于注解的切面实现 什么是 对象/关系 映射集成模块 什么是 Java 的反射机制 什么是 ACID BS与CS的联系与区别 Cookie ...

  8. HDU 1686 Oulipo(KMP变形求子串出现数目(可重))

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686 题目大意:给两个字符串A,B求出A中出现了几次B(计算重复部分). 解题思路:稍微对kmp()函 ...

  9. FreeMarker使用之比较if

    1. =或者==:判断两个值是否相等. 2. !=:判断两个值是否不等. 3. >或者gt:判断左边值是否大于右边值 4. >=或者gte:判断左边值是否大于等于右边值 5. <或者 ...

  10. Git分支管理小结

    分支管理命令 每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而是指向mas ...