DisplayTag一直以来为人们所诟病的缺点就是它的装载数据的方式: 一次性把所有数据读取到内存中,然后再分页显示。这样做的后果就是在处理大批量数据时力不从心,可用性急剧下降,并且在翻页显示的仅仅是内存中的数据而不是实时数据.因此人们往往只是在实现小型项目的小数量表格分页显示时才想到DisplayTag,并且因为考虑到项目的扩展往往最终弃用DiaplayTag.
但是发布于本月12日的1.1版本彻底解决了这个问题,新版的DisplayTag提供了两种方式实现部分装入数据:
(1)实现接口 org.displaytag.pagination.PaginatedList,用户可以实现这个接口用来代替以前传入DisplayTag的list对象,DisplayTag将认为分页和排序的动作已经由外部动作执行了,而不会使用 原来的分页方式(即全部读入内存).但是这样用户需要自己编写分页和排序代码;
(2)设置相应参数,告诉DisplayTag传入的数据集由外部分页和排序,而不使用默认的方式.比如:
<display:table name="testList" sort="external" defaultsort="1" pagesize="20" id="element" partialList="true" size="resultSize">
其中:
sort="external" 告诉DisplayTag传入的数据集已经由外部程序排好序了..
defaultsort="1" 说明默认是升序(Descending is 2, Ascending is 1);
partialList="true" 说明部分装入数据;
pagesize="20" 每页显示记录数;
size="resultSize" 显示记录的总条数(此参数结合PageSize,使得表格在只拿到某一页的完整数据的同时,可以知道会有多少页,并将其他的页数也列举出来,当用户实际翻页时才去获取当页数据);
displaytag(partialList="true")分页例子JSP:
<% @tagliburi = " /WEB-INF/displaytag.tld " prefix = " display " %>
< display:table name ="resultList" pagesize ="100" requestURI ="listLog.do" sort ="external" id ="row" partialList ="true" size ="resultSize" >
< display:column property ="operdate" title ="操作时间" ></ display:column >
< display:column property ="pername" title ="操作人员" ></ display:column >
< display:column property ="opertype" title ="操作类型" ></ display:column >
</ display:table >
name="resultList" 将记录集存在session或者request中的键值
pagesize="100" 每页显示100条数据
sort="external" 外部排序
id="row" 表格id值,用于程序得相关的参数
partialList="true" 分段从数据库中读数据
size="resultSize" 记录的总条数,用于计算总页数
Controller:
// 页数的参数名
StringpageIndexName = new org.displaytag.util.ParamEncoder( "row" ).encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);
// 每页显示的条数
int pageSize = 100 ;
// 当前页
int pageIndex = GenericValidator.isBlankOrNull(request.getParameter(pageIndexName)) ? 0 Integer.parseInt(request.getParameter(pageIndexName)) - 1 );
// 统计总记录数的sql语句
int resultSize = logDao.getAllCount();
// 取得当前页数据
ListresultList = logDao.getLogList( int pageIndex, int pageSize);
try {
request.setAttribute( " resultList " ,resultList); // 把结果存入request
request.setAttribute( " resultSize " , new Integer(rs.getInt( 1 ))); // 将总记录数保存成Intger实例保存在request中
} catch (Exceptionex) {
ex.printStackTrace();
}
其中 logDao.getAllCount() 和 logDao.getLogList(intpageIndex,intpageSize),根据不同持久层有不同实现,此处略。
分享到:
相关推荐
NULL 博文链接:https://wooden-baby.iteye.com/blog/494060
display tag 分页例子中用到的有关display tag lib的jar包,把这些jar包拷贝到WEB-INF/lib中例子就可以运行了。 博文链接:https://zhou568xiao.iteye.com/blog/192366
改装后的displayTag分页插件,解决中文问题,内置帮助文档和示例文件及jar包,比较好用,如果不满足你的需求请不要砸砖 补充: csdn附件不能修改,jsp+servlet分页时有bug,请注意查询所有的serlvet不支持带参数,即...
个人学习收集网上资料辛苦整理而成. DisplayTag分页资料整理.chm DisplayTag 分页 chm java taglib
在提供的资料中,"displaytag分页模版使用说明书.xls"可能包含了一份详细的使用指南,涵盖如何配置DisplayTag,如何在JSP页面中嵌入标签,以及如何实现各种高级功能。这份文档将指导开发者了解DisplayTag的配置文件...
DisplayTag分页技术的核心在于其能够自动处理大量数据,将这些数据按页显示,从而提高网页性能和用户体验。以下是关于DisplayTag分页的一些关键知识点: 1. **配置与引入**:首先,你需要在项目中引入DisplayTag库...
这个"一个完美的displaytag分页控件的例子"显然展示了如何有效地利用DisplayTag库来实现一个美观且功能丰富的分页表格。 在JSP(JavaServer Pages)开发中,DisplayTag是一个常用的标签库,它提供了许多预定义的...
displaytag分页模版使用说明书
Displaytag 是一个开源的 Java 框架,用于在 Web 应用中生成表格和实现分页、排序等功能。它简化了在 JSP 页面中处理数据表的复杂性,提供了丰富的定制选项。以下是对 Displaytag 实现分页的详细解释: 1. **下载与...
07java培训displaytag分页实例六
DisplayTag是一个功能强大的开源库,主要用于生成表格和提供分页功能,而Struts2则是一个MVC框架,用于处理用户请求和业务逻辑。将两者整合可以实现高效、美观的分页效果。 首先,我们需要了解Struts2的基本架构。...
displaytag分页模版
DisplayTag是Java Web开发中的一款强大且功能丰富的表格和分页控件库,它极大地简化了在JSP页面中处理复杂表格和实现分页的工作。这个压缩包文件包含的就是DisplayTag的相关jar包以及可能的使用说明文档,对于开发...
DisplayTag 是一个非常受欢迎的开源Java Web开发框架中的分页组件。它以其简洁的使用方式和强大的功能,被广泛应用于各种Web应用项目中,尤其是在处理大量数据展示时,能够有效地提高用户体验,减轻服务器压力。 ...
Displaytag 是一个强大的开源Java库,用于创建复杂的HTML表格,包括分页、排序、过滤等功能。在Web开发中,为了提升用户体验,常常需要在表格中实现鼠标悬停时行变色的效果。由于Displaytag 默认并不支持这个功能,...
Displaytag和Pager-taglib是两个在Java Web开发中常用的分页库,主要用于处理大量数据的显示,提升用户体验,减轻服务器压力。这两个库都是基于JSP标签库(Tag Library)实现的,可以方便地集成到Spring、Struts等...