在web编程中,通常会在项目中定义一个po(持久化对象),

同时这个po的所有属性与数据库对应表的所有字段是一一对应。

这样的目的在于,数据库取出的数据可以无缝的加载到项目运行环境中。

 * 

po属性与表字段最好单词也一一对应。一般来说,数据库字段混略大小写,而Java大小写明敏,

这不重要,如持久化框架MyBatis帮我们做映射,只需要单词一一对应,那么即可以映射,且省事不少。

 * 

然而一个po虽然可以把数据库中的数据完整的映射到项目运行环境中,

但是这些数据并非所有的属性值都可以和需要让客户端知道。

 * 

有人提出一个解决方案是定义一类数据vo(数据传输对象)在负责来往于客户端和服务器,

但是,为此要做的数据复制显得多余和繁琐,令人讨厌。

 * 

那么为什么不只用po呢?

而此时,就要注意每一个po属性的使用范围了(有没有必要返回某些属性值到客户端?)

 * 

目前客户端和服务器传输数据格式普遍采用json数据。

并且各种第三方json数据格式化包以供使用,

然而它们的格式化都显得粗略和不灵活,比如,想要自定义某些属性可以被格式,或者某些属性不可以被格式这样的需求,没有一个简洁的方式来实现。

 * 

但是,只使用po又不得不应该这样(某些属性不应该格式化成json数据,并返回给客户端)。

并且有选择性的格式化,使得传输到客户端的数据也变得精简。

 * 

注意一点:      客户端是暴露给用户的,用户中的一部分是恶意的。

                所以,用户只能看到他可以看到的数据,不能看到敏感数据,

                同时,用户知道的越少,服务器越安全。


一方面,要求格式化Java对象成json数据操作简单,

另一方面,要求有选择性的格式化某些属性。

 * 

这就促使了以下的探寻自定义属性格式之路。



网友喜欢把代码以文本的形式发表,但是通常弄得看了一半天,也没有配置好。

所以我喜欢以附件的形式,直接把一个可运行的项目发表。



开发环境:Windows7,JDK7