楼主上述这种方法很好。《Struts开发实例》中是这样写的:对于Struts的分页显示问题,一般建议不要采用<logic:iterate>标签及offset参数来做分页,这样把记录都读取出来太费资源(特别记录多时),一般采用读取一页显示一页的方法。当然,如果把这两种方法结合起来效果最好,即每次读出5至10页,再用<logic:iterate>标签及offset参数来做分页,如果用户请求的页不在已经读出的范围内,则重新从数据库中读取另几页,再用<logic:iterate>显示。
另外,一般还建议不要采用专用的分页标签,主要是各公司的分页标签标准不一,版本不一,对程序来说也不容易把握。本例是通过在DAO文件中生成一个分页字符串的方法实现的,分页字符串的形式可由程序自由改变。当然,在开发环境:Java Web Studio系列开发环境visual strutst版本中,只需要选择“分页”功能就行了,代码都是自动完成的。楼主所述的方法与中《Struts开发实例》提到的三种方法都不同,是一个新的好办法。但是,这个ID是关键,因为这个ID要起到一个指针的作用,而不是另一个查询的条件,如果读数据时每个ID都要查询一次,那样它就变成了效率最底的方法了。所以,在建立数据库和添加、删除数据时一定要好好地对它进行处理,最好是自动生成的ID,并且是连续的。可见,好的方法要做许多附加的工作,各个利弊。
JavaWebStudio中采用的方法是一种折衷的方法,详情见:
http://community.csdn.net/Expert/topic/3132/3132668.xml?temp=.3239252