大话分页(二)
上篇文章大话分页(一)中简单介绍了Mysql、oracle和SqlServer三种数据库分页的方式以及Hibernate框架进行的分页方式及其优势。接上篇内容,我在此继续介绍。今天我们来简要介绍一下前台页面显示的分页框架:pager-taglib。
pager-taglib
后台无论是使用具体数据库的特色语句进行分页,还是使用Hibernate框架,它们都是将数据封装在PageModel中,都需要将PageModel的对象传递到前台来,并且在前台进行显示。pager-taglib框架就是一个前台显示的框架。使用该框架的步骤基本如下:
1、拷贝pager-taglib.jar包到项目下;
2、在JSP页面中使用taglib指令引入pager-taglib标签库:
<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>;
3、使用pager-taglib标签库进行分页处理。
pager-taglib使用起来非常简单基本使用如下:
<pg:pager items="1000"> <pg:first> <a href="${pageUrl}">首页</a> </pg:first> <pg:prev> <a href="${pageUrl }">前页</a> </pg:prev> <pg:pages> <a href="${pageUrl }">${pageNumber }</a> </pg:pages> <pg:next> <a href="${pageUrl }">后页</a> </pg:next> <pg:last> <a href="${pageUrl }">尾页</a> </pg:last> </pg:pager>
pg:pager:这个标签用来设置分页的总体参数
pg:first:第一页的标签
pg:pre:上一页标签
pg:next:下一页标签
pg:last:最后一页的标签
pg:pages:这个标签用来循环输出页码信息
下面看一个例子。下面是一个具体分页实例的主要分页代码实现:
<TABLE width="778" border=0 align=center cellPadding=0 cellSpacing=0 borderColor=#ffffff style="FONT-SIZE: 10pt"> <TBODY> <TR> <TD height=28 align=right vAlign=center noWrap background=images/list_middle.jpg> <!-- url属性:每次点击分页页号都是一次请求,这是所请求的url; maxPageItems属性:设置每页显示的最大行数。默认为10 export:变量的意义--> <pg:pager url="org.do" items="${orgPageModel.total }" export="currentPageNumber=pageNumber" maxPageItems="3"> <!-- 使用param向后台传递参数 --> <pg:param name="parentId"/> <pg:first> <a href="${pageUrl}">首页</a> </pg:first> <pg:prev> <a href="${pageUrl }">前页</a> </pg:prev> <pg:pages> <!-- 设置当前页的样式:当前页的页号为红色,且不为链接 --> <c:choose> <c:when test="${currentPageNumber eq pageNumber }"> <font color="red">${pageNumber }</font> </c:when> <c:otherwise> <a href="${pageUrl }">${pageNumber }</a> </c:otherwise> </c:choose> </pg:pages> <pg:next> <a href="${pageUrl }">后页</a> </pg:next> <pg:last> <a href="${pageUrl }">尾页</a> </pg:last> </pg:pager> </TD> </TR> </TBODY> </TABLE>
通过之前的讲解我们可以知道:后台需要PageNo和PageSize两个参数,才能查询上来数据。也就是说前台需要向后台提供这两个参数。
在pager-taglib这个框架中,封装了“pager.offset”参数,也就是“从第几个记录开始查询分页”的意思,即。我们可以在控制器中通过request.getParameter()取得。另外,还需要我们自行设置PageSize(每一页最多几行数据)变量。在哪里设置都无所谓,写在程序里面都没关系。
本文主要介绍了pager-taglib框架的简单实现。其实它还能实现很多样式的分页。这里就不一一介绍了。我写这两篇文章的目的就是感觉学了不少分页,感觉乱哄哄的,所以将它们加以对比,加以整理。从实现上来看,他们还是非常简单的。可是我想说的是越是简单的东西,我们越要对它引起重视。只有踏踏实实走好每一步,才能减少让千里之堤,溃于蚁穴的几率。