[转] 关于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. <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属性,名称则没有变

 
时间: 2024-10-30 03:16:42

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

log4j.properties配置详解与实例

log4j.properties配置详解与实例-全部测试通过 最近使用log4j写log时候发现网上的写的都是千篇一律,写的好的嘛不全,写的全一点的嘛没有一点格式,看着累.这里把网上收集到的整理了一下,并且全部都在机器上测试成功了.这么好的文档估计没有了吧? ################################################################################ #①配置根Logger,其语法为: # #log4j.rootLogger =

struts.xml配置详解

1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件. 比如一个网上购物程序,可以把用户配置.商品配置.订单配置分别放在3个配置文件user.xml.goods.xml和order.xml中,然后在struts.xml中将这3个配置文件引入: struts.xml: 1 2 3 4 5 6 7 8 9 10 <?xml version="1.0

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

一.DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 的使用已经过时! spring 3.1 开始我们应该用 RequestMappingHandlerMapping 来替换 DefaultAnnotationHandlerMapping, 用 RequestMappingHandlerAdapter 来替换 AnnotationMethodHandlerAdapter. 二.annotation-deiver详解

struts.xml 配置详解

struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件. 比如一个网上购物程序,可以把用户配置.商品配置.订单配置分别放在3个配置文件user.xml.goods.xml和order.xml中,然后在struts.x

[转] struts.xml配置详解

转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件. 一下分别介绍一下几个struts.xml中常用到的标签 1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件. 比如一个网上购物程序,可以

[学习笔记]struts.xml配置详解(所有基本配置,包括通配符)

1.<include> 利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml中使用<include>标签引入其他配置文件.比如一个网上购物程序,可以把用户配置.商品配置.订单配置分别放在3个配置文件user.xml.goods.xml和order.xml中,然后在struts.xml中将这3个配置文件引入: struts.xml: [html] view plaincopy <?xml version="1.0

struts.properties配置详解

Struts 2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等.除此之外,Struts 2框架还包含     struts.properties文件,该文件定义了Struts 2框架的大量属性,开发者可以通过改变这些属性来满足应用的需求. struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的v

struts.properties配置详解(转)

Struts 2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等.除此之 外,Struts 2框架还包含     struts.properties文件,该文件定义了Struts 2框架的大量属性,开发者可以通过改变这些属性来满足应用的需求. struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的

web.xml文件配置详解以及实例说明

1.web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件. 2.部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义).所有部署描述符文件的顶层(根)元素为web-app.请注意,XM