星期一, 三月 29, 2004

JSP Web 页面实现表格列表Off-line数据大比较.ResultSet vs CachedResultSet vs Result

典型应用类似Microsoft传统桌面技术ADO.
通过JDBC ResultSet 得到查询结果后,传统方式是直接通过.next()来Iterator显示所有记录。这种方式同MVC的偶合程度比较紧凑,经常需要许多HTML来格式化表现的内容。
目前采用Collection VO(Value Object)或Collection POJO(Plaint old Java Object)模式来把查询结果传递到Servlet Front-controler来处理。

所有的项目都需要编写这种无聊的代码。

Sun 终于推出了javax.sql.RowSet包来解决了这种问题。不过目前依然是Public Review 2版本,bug一大堆。依然不能用在生产环境种。在这之前,成熟的可以使用的替代方法,只有JSTL带来的ResultSet, javax.servlet.
jsp.jstl.sql.Result.可以把JDBC ResultSet 转换为Off-line的Result.避免了ResultSet显示不能释放connection的弊病.

调用方法:Result.toResult(java.sql.ResultSet rs) .
这中方法提供了导航和分页的基本支持。可以在JSTL自然使用。
不过更加完美的RowSet包中的CachedRowSetImpl已经计划包含在J2SE 1。5种了。到那里,off-line 表格式的显示,编辑,才能真正完美实现。
.目前通过JSTL的Result和<sql:update> tag也可以做到很多工作了。不过需要手工编写大量的代码。
等javax.sql.RowSet包完全实现后,就可以放弃传统的编码方法了。
官方网站:http://www.jcp.org/en/jsr/detail?id=114