关于Struts-JSON的提高开发效率
来源:互联网 发布:人工智能客服系统 编辑:程序博客网 时间:2024/04/29 17:39
一、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, 并且需要一下几点:
<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>
通过配置信息我们可以知道:
1、json-default其实是继承了struts-default的
2、定义了一个name为json的返回类型和一个name为json的拦截器<action name="*" class="*"><result name="success" type="json"/></action>//我们需要将result的返回类型定义为json
三、关于JSON在struts.xml中的一些属性的功能
<action name="*" class="*"> <result name="success" type="json"> <param name=""></param>//关于对JSON的一些定义 /*excludeProperties //代表排除Action中的哪些属性,排除多个属性时,使用逗号进行分隔(即不需要序列化的属性) 例:<param name="excludeProperties">age</param> 排除getAge()这个方法 为什么是排除这个方法下面详解 includeProperties //代表包含Action中的哪些属性,包含多个属性是,使用逗号进行分隔(即需要序列化的属性) 例:<param name="includeProperties">address</param>包含getAddress()这个方法 为什么是包含这个方法下面详解 excludeNullProperties //代表排除Action中属性值为空的字段 例:<param name="excludeNullProperties">true</param> 使用true/false 默认为false(即包含属性值为null的字段) root //代表从哪里开始序列化 例:<param name="root">person</param> person对应的可以是一个属性,也可以是一个对象,也可以是一个集合 //当在这里定义后,只会将person进行序列化,如果person是一个对象,则会将person对象中所有的getter方法都进行序列化 那么excludeProperties的优先级要高,因此不对 该属性进行序列化 */ </result> </action>
四、关于JSON在Action对象中注解的使用。
对于JSON的注解主要有一下几个属性可以定义
name:指定序列化的时候对应的名称
/*
例:@JSON(name = "myname") 则在客户端接收到的JSON中UserName属性对应的地方为 :
{myname:"张三"} 以前的则是{username:"张三"}
public String getUsername() {
returnusername;
}
*/
serialize:对该方法进行序列化 true/false
/*
例:@JSON(serialize=true) 对该方法序列化,如果为false则不进行序列化
publicString getUsername() {
returnusername;
}
*/
deserialize:不对该方法进行序列化 true/false
/*
例:@JSON(deserialize=true) 不对该方法序列化,如果为false则进行序列化
publicString getUsername() {
returnusername;
}
*/
format:设置JSON对该方法的转换方式,一般用于对时间进行转换
/*
例:@JSON(format="yyyy-MM-dd") 则客户端接收的JSON中date对应的值为:
{date:"2011-10-2"}
publicDate getDate() {
returndate;
}
*/
五、具体的实例:
1、Java代码:
package org.viancent.action; import java.util.Date; import org.apache.struts2.json.annotations.JSON; import com.opensymphony.xwork2.ActionSupport; public class GetJsonAction extends ActionSupport { private String username; private String password; private int age; private Date date; @JSON(serialize = false) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @JSON(name="mypassword") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @JSON(format="yyyy-MM-dd") public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @Override public String execute() throws Exception { this.setDate(new Date()); this.setAge(10); this.setPassword("world"); this.setUsername("hello"); return SUCCESS; } }
2、struts.xml:
<struts> <package name="struts2" extends="json-default"> //这里一定要继承json-default <action name="getjsons" class="org.viancent.action.GetJsonAction"> <result name="success" type="json"> //这里一定要定义type属性为json <param name="excludeProperties">age</param> //排除getAge()方法 </result> </action> </package> </struts>
3、JSP:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="text/javascript" src="WEB-JS/jquery-1.5.1.js"></script> //使用jquery一定要导入js <script type="text/javascript"> //使用jquery实现异步提交 function getJson() { $.post( "/struts2/getjsons.action",{},function(returnedData,status) { if("success"==status) { alert(returnedData); } } ) } </script> </head> <body id="theBody"> <input type="button" value="GetJson" onclick="getJson();"> </body> </html>
得到的结果为:{"date":"2011-03-21","mypassword":"world"} // 使用浏览器的bug工具查看alert(returnedData);弹出来的只是 [object,Object]
- 关于Struts-JSON的提高开发效率
- 关于Struts-JSON的提高开发效率
- 关于Struts-JSON的提高开发效率
- 关于Struts-JSON的提高开发效率
- struts+hibernate的替代方案:struts+newxy,开发效率提高十倍
- struts+hibernate的替代方案:struts+newxy,开发效率提高十倍
- 关于提高Flex开发效率的一个模式设想
- 关于提高Flex开发效率的模式实践结果
- 关于使用xCode的Tab来提高开发效率
- 关于提高MSSQL的查询效率
- 关于提高AlphaBlend效率的思考
- 关于提高AlphaBlend效率的思考
- 关于提高AlphaBlend效率的思考
- 关于提高UDP发送效率的方法
- 关于提高编码效率的方法
- 关于提高程序效率的一些建议
- 提高JBuilder开发WEB层的效率
- 提高软件开发效率的关键是什么?
- c++ builder 中给button添加图标
- 【Android】Service Lifecycle
- Excel 随机抽样多个样本
- 用花生壳工具和带花生壳DDNS服务的路由器配置远程监控的图文教程
- Unity手游之路<十一>资源打包Assetbundle
- 关于Struts-JSON的提高开发效率
- Protecting resources&…
- 转发:http://www.cocoanetics.com…
- xcode 4.5 BUG and…
- [译]关于iOS和OS X废弃的API…
- error while loading shared libraries: libcudart.so.3: wrong ELF class: ELFCLASS32 的解决
- android 客服端做HTTP请求 无返回码 不执行请求?
- 截取某张图片的一部分
- android GridView 用法