在web编程中,通常会在项目中定义一个po(持久化对象),
同时这个po的所有属性与数据库对应表的所有字段是一一对应。
这样的目的在于,数据库取出的数据可以无缝的加载到项目运行环境中。
*
po属性与表字段最好单词也一一对应。一般来说,数据库字段混略大小写,而Java大小写明敏,
这不重要,如持久化框架MyBatis帮我们做映射,只需要单词一一对应,那么即可以映射,且省事不少。
*
然而一个po虽然可以把数据库中的数据完整的映射到项目运行环境中,
但是这些数据并非所有的属性值都可以和需要让客户端知道。
*
有人提出一个解决方案是定义一类数据vo(数据传输对象)在负责来往于客户端和服务器,
但是,为此要做的数据复制显得多余和繁琐,令人讨厌。
*
那么为什么不只用po呢?
而此时,就要注意每一个po属性的使用范围了(有没有必要返回某些属性值到客户端?)
*
目前客户端和服务器传输数据格式普遍采用json数据。
并且各种第三方json数据格式化包以供使用,
然而它们的格式化都显得粗略和不灵活,比如,想要自定义某些属性可以被格式,或者某些属性不可以被格式这样的需求,没有一个简洁的方式来实现。
*
但是,只使用po又不得不应该这样(某些属性不应该格式化成json数据,并返回给客户端)。
并且有选择性的格式化,使得传输到客户端的数据也变得精简。
*
注意一点: 客户端是暴露给用户的,用户中的一部分是恶意的。
所以,用户只能看到他可以看到的数据,不能看到敏感数据,
同时,用户知道的越少,服务器越安全。
一方面,要求格式化Java对象成json数据操作简单,
另一方面,要求有选择性的格式化某些属性。
*
这就促使了以下的探寻自定义属性格式之路。
网友喜欢把代码以文本的形式发表,但是通常弄得看了一半天,也没有配置好。
所以我喜欢以附件的形式,直接把一个可运行的项目发表。
开发环境:Windows7,JDK7