关于 JavaBean 规范你还是应该知道的二三事(补充)

前面写过一篇:关于 JavaBean 规范你还是应该知道的二三事,发现还略受关注。其中有人对 boolean 型属性的 getter/setter 方法还有些想法,以及 JavaBean 的规范是根据属性名找相应的 getter/setter 方法,还是由 getter/setter 定位属性呢。本文主要就这两问题展开话题,原本想附中前篇中去,但考虑会让前文凌乱,所以另立新篇。

1. 关于 boolean  型属性

分别来看看 Eclipse(3.5) 和 NetBean(6.7) 的重构功能对 boolean student 和 boolean isStudent 生成什么样的 getter/setter 方法的。 阅读全文 >>

关于 JavaBean 规范你还是应该知道的二三事

作为 Java  程序员,对于 JavaBean 也许你会说再熟悉不过了,它贯穿在系统的多层中,不同的叫法有 PO、VO、DTO、POJO、DO(Domain Object)。然而它无外乎就是一个 Class 类,带上些属性和它们的 setter/getter 方法,set/get 后面那一个字母大写。虽然我们现在很少把 JavaBean 与那个古老的 2.0 的 EJB 搞混,但为什么明明用 IDE 为属性生成的 getter/setter 方法,应用一运行,还是报找不到某个 bean 属性的 setter 或 getter 方法呢?

要知道,在 Sun 的网站上那个关于 JavaBean 规范的 PDF 文档可是有足足实实的 114 页啊。难免有些规则有点古怪,至使知名的 IDE 都难以应对,所以我们还是有必要了解其中二三,来规范我们的 JavaBean 和解释一些情形。

Sun  的关于 JavaBean 规范见:http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html,其中可下载到 JavaBean 规范的  PDF 文档。 阅读全文 >>

RTX2009 Beta1对外发布

经过快速的开发和一定时间的小范围试用之后,RTX2009Beta1版本在今天发布了。目前RTX保持每个季度发布一个版本的节奏,使用户的反馈和需求能快速响应。RTX2009Beta1最重要的功能是实现了单套RTX可部署多台文件服务器,这个功能特别适合那些有分支机构的大型用户,在多人会话传文件时,保证本地用户的文件传输都在本地文件服务器上中转,从而减少分支机构与总部之间的带宽占用,降低成本、提升体验。此功能与之前发布的企业集群结合使用,几乎可以满足所有大型企业用户的最复杂部署,相应的介绍文档请参考:

RTX2009Beta1的更新内容如下: 阅读全文 >>

vi 与 vim 的区别,及 vim 的语法加亮

之前每次终端连接到了 Linux/Unix 编辑文件,只知道用 vi,至于此时是 vi 还是 vim 就不得而知了,也不知如何去知。总以为 vi 就是 vim,vim 就是 vi,就没认真想过多出的 vim 是怎么回事。

据说:vi - visual editor, very inconvenient, or virtually incomprehensible, vim - VI IMproved,俨然是个 vi 的加强版。

只是经常会登录同是 Redhat AS 4 的两台机器,同样是用 vi 启动编辑器,一个能进行语法加亮,v 可进入可视模式,空行前的波浪号是蓝色的(下称机器A);另一个对于各种语法却是熟视无睹,v 无法进入可视模式,空行前的波浪号也是白色的(下称机器B)。这时才想起是否是 vi 与 vim  的区别,网上找来: 阅读全文 >>

vi/vim 快捷键盘对照图(含中英文)

对于经常要辗转于 Linux/Unix 终端的用户,时常要使用 vi 来编辑文本。Emacs 虽说功能强,但学习起来更为陡峭,而况有些系统默认时没有 Emacs。 对于 vi 未有多份心者,也许使用它四五年时间,不过 i、o、dd、:wq、方向键移动光标尔耳,y、p 拷贝粘贴都极少用。

总是想,既然常常用一个软件,那就尽量用好它,为工作多提升效率,不必多耗费时间,只每时多份心而已。故网上找来 vi/vim 的快捷键盘对照图,有中英文对照,可打印出来,贴于你座位的隔板上,以助记忆习知。

若是对 vi/vim 有了好感,也想在 windows 一试 vi/vim  的身手,你可以用 cygwin 里的 vi。而且 vi/vim 也像 Emacs  一样,有了 for windows 版的 vi/vim,并且一来就是俩: 阅读全文 >>

DWR 的 Converter 实现原理简单分析及应用

我们在应用 DWR 调用远程方法时涉及到 JS 与 JAVA 之间参数和返回值的数据转换,例如:

JS 的 123 与 Java 的 int  或 Integer、long 间的转换
JS 的 "2009-06-23" 与 Java 的 java.util.Date 之间的转换
JS 的 "[1,2,3]" 与 Java 的 int[] 间的转换
JS 的 "{id:123, name: 'Unmi'}" 与 Java 的 Class Person{int id; String name} 间的转换

或者更复杂的嵌套类型( "{id:123, name: 'Unmi', blogs:['http://unmi.blogjava.net','http://blog.csdn.net/kypfos']}" ) 与 Java 类型间的转换,等等。那么这一切是怎么进行的呢?其实我们见识过很多组件的类型映射,如 Java 的 PropertyEditor、Hibernate(UserType)、iBatis(TypeHandler) 的类型映射,Struts1/2 中 Form/Model 用的 Converter 等。 阅读全文 >>

请教一下 Servlet 中如何设定下载文件保存用的字符集

在前面一篇日志:理解和灵活应用 Struts2 的文件下载功能 还留下一个问题,在 Servlet 中支持文件下载功能时,客户保存下载文件所用的字符集总是 ANSI(ISO8859-1),如何能设定客户保存文件用的字符集呢?像 BlogJava 的备份数据功能下载后就是用的 UTF-8 字符集的。自己作了一些尝试,总是无济于事,看如下代码是 Servlet 的 doGet() 方法:

阅读全文 >>

使用 DWR 我是这样做简单分页的[自己记录一下]

DWR 本身未提供分页的功能,所以这部分要自己来实现。如果把后台的所有记录都拉到页面用 JS 分页,那是很不现实的。因此,虽说是 DWR 分页,但还得服务端来支持,由服务端的远程方法只返回当前页所显示的记录,DWR 自己要明确当前是第几页,是否有上一页、下一页。

还是用代码来说明吧,分解为三部分代码:

1. 暴露给 DWR 调用的 Java 的远程方法
2. JS 的 DWR 调用
3. 显示分页导航栏

DWR 要调用的 Java 方法: 阅读全文 >>

理解和灵活应用 Struts2 的文件下载功能

文件下载给我们最直接的概念就是,给个文件链接点击就下载。似乎太简单,然而 Struts2 却把它作为一个独立的学问来对待,理由有四:

1. 文件名为中文时,直接点击下载,链接可能会走样(某些浏览器,URL 编码的问题),致使无法下载。
2. 不总是从下载实际的文件,文件内容有时候是动态生成的,如数据库中的内容。
3. 对于知名的文件类型不让浏览器直接打开,而是出现下载对话框保存文件。例如,要下载的文件是 .txt 的,可能直接就在浏览器中显示其内容。
4. 需要授权才能下载文件时

当然对于以上若干问题,Servlet/JSP 都能通过正确的 URL 编码,响应头设置、权限代码控制解决,只是 Struts2 让我们处理起来更方便了,内部原理自然是一样的。 阅读全文 >>