关于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. 每天一条linux命令(1):ls命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...

  2. Java并发编程(二)

    1.Lock接口                                                        在Lock接口出现之前,Java程序是靠synchronized关键字实 ...

  3. 健身VS不健身,完全是两种不同的人生!

    这两天一组同龄人合照 刷爆了国内健身圈, 图左是一位67岁的老人, 图右是67岁的健美运动员杨新民老师 相同年龄, 但从外观上有着强烈的距离感! 让多人不禁感叹,健身和不健身, 简直就是两种状态,两种 ...

  4. Linux中查看CPU信息 (转)

    cat /proc/cpuinfo中的信息 processor       逻辑处理器的id. physical id    物理封装的处理器的id. core id        每个核心的id. ...

  5. jQuery对的表单数据序列化和校验

    jQuery对的表单数据序列化和校验 表单序列化 如果想让表单通过ajax异步提交,那么首先我们要通过js获取到每个表单中输入的值,如果表单项比较多的话,是一件很麻烦,很痛苦的事情,那么我们可以通过j ...

  6. NTP详解-转

    网管实战:Linux时间服务器配置 [IT168 专稿]目前计算机网络中各主机和服务器等网络设备的时间基本处于无序的状态.随着计算机网络应用的不断涌现,计算机的时间同步问题成为愈来愈重要的事情.以Un ...

  7. Bootstrap开发模板

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  8. LeetCode741. Cherry Pickup

    https://leetcode.com/problems/cherry-pickup/description/ In a N x N grid representing a field of che ...

  9. Pylint在项目中的使用

    需求背景: Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码. Pylint 是一个 Python 工具,除了平常代码分析 ...

  10. Adminimize 插件:WordPress根据用户角色显示/隐藏某些后台功能

    倡萌刚才分享了 WordPress根据用户角色隐藏文章/页面的功能模块(Meta Boxes),如果你还想根据不同用户角色显示或隐藏后台的某些功能,比如 顶部工具条.左边导航菜单.小工具.仪表盘.菜单 ...