改进Spring中的分页技术.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
改进Spring中的分页技术

改进Spring中的分页技术 Spring中有一个PagedListHolder,可以实现分页。但此类有几个缺点: 1. 使用此类的代码比较繁琐 2. 此类存放的数据源是所有的记录集,即对于记录数为1000条的数据,即使我们只需在一个页面中显示10条记录,每次均需要检索1000条记录出来,并且没有内在的缓存机制 3. 如果需将pageSize, maxLinkedPages这些一般为Session级的变量存于Session中,则必须在Session中存放PagedListHolder,从而导致大容量的数据常常撑满了Session 4. 只是实现了Serializable标识接口,且getPage(), setPage(), setPageSize()方法中直接使用newPageSet (private) 的属性,不利于子类覆盖。而且,内部类的各个方法耦合极强。特定方法的使用必须信赖于某个方法或标志变量作为前提条件。 比较理想的情况是,根据每一个HttpServletRequest产生一个PagesListHolder,不管记录总数有多少个,每次只检索页面上所显示的记录,但将pageSize, maxLinkedPages设为Session级的效果。 鉴于上述几点,我从Spring原有的PagedListHolder抽取出一些必需的方法名作为接口,并以一个名为RequestPagedListHolder的类实现之。 下面是抽取出来的PagedListHolder接口。 package com.sarkuya.web.pagination; import java.io.Serializable; import java.util.List; /** * * @author Sarkuya */ public interface PagedListHolder extends Serializable { public static final int DEFAULT_PAGE_SIZE = 10; public static final int DEFAULT_MAX_LINKED_PAGES = 10; public void setRecordsSubst(List recordsSubset); public void setRealRecordCount(long realRecordCount); /** * 设置每页应有多少条记录。 */ public void setPageSize(int pageSize); /** * 返回每页共有多少条记录 */ public int getPageSize(); /** * 根据pageSize,返回共有多少页 */ public int getPageCount(); /** * 返回当前页码。 * 首页为0 */ public int getPage(); /** * 设置当前页码。 * 首页为0 */ public void setPage(int page); /** * 设置围绕当前页最多可以显示多少链接的页数。 * 此方法strong会/strong影响getFirstLinkedPage()及getLastLinkedPage() */ public void setMaxLinkedPages(int maxLinkedPages); /** * 返回围绕当前页最多可以显示多少链接的页数 */ public int getMaxLinkedPages(); /** * 返回首页的页码 */ public int getFirstLinkedPage(); /** * 返回最后一页的页码 */ public int getLastLinkedPage(); /** * 转至前一页。 * 如果已经是首页,则停在该页。 */ public void previousPage(); /** * 转至下一页。 * 如果已经是最后一页,则停在该页。 */ publ

文档评论(0)

wannian118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档