使用Pager类已经很方便了,但是在jsp页面里还是要重复的写分页的展示,在此把分页的jsp页面抽离出来,可以在别的页面中直接include
注:pager是放入request中的分页类,里面含有各种分页的信息,其中pageNumber是当前页码,totalCount是数据总条数,totalPages是总页数,pageSize是每页显示数据条数,navigatePageNumbers是存放导航页的数组。
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/page/share/taglib.jsp"%>
<!-- 通用的分页页面,通过调用需要分页的页面里的js:toPage函数,将将要到达的页面页码给函数,让页面里的表单提交到相应的页码页面 -->
<font color="#FFFFFF">
当前页:第${pager.pageNumber}页 | 总记录数:${pager.totalCount}条 | 每页显示:${pager.pageSize}条 | 总页数:${pager.totalPages}页
</font>
<c:if test="${pager.pageNumber > 1}">
<a href="javascript:topage('${pager.pageNumber-1}')"
class="a03">上一页</a>
</c:if>
<c:forEach items="${pager.navigatePageNumbers }" var="navi">
<c:if test="${pager.pageNumber==navi}">
<b><font color="#FFFFFF">第${navi}页</font> </b>
</c:if>
<c:if test="${pager.pageNumber!=navi}">
<a href="javascript:topage('${navi}')"
class="a03">第${navi}页</a>
</c:if>
</c:forEach>
<c:if test="${pager.pageNumber < pager.totalPages}">
<a href="javascript:topage('${pager.pageNumber+1}')"
class="a03">下一页</a>
</c:if>
这个页面算是我觉得真正意义上的通用jsp分页页面了(目前我所能达到的水平),但如果需要进行查询操作,而很多人的查询操作和列表往往是同一个页面(只需要添加一个查询条件过滤就可以将列表action变成查询结果action,因此页面也是同一个),那么怎么在查询结果里分页呢?
那问题也好解决:只要在相应的action里,比如获取学生列表,查询条件是name,那么查询操作会在这里进行:
if(name != null && !name.equals("")) {
//1.在sql查询里添加name项然后获得最终已经分页好的数据
//2.初始化分页工具类pager,并且将查询获得的list设入pager.list
//3.将pager对象设入request
//4.将附加的查询链接设入request:request.setAttribute("queryUrl", "name=" + name);
}
在页面中展示学生列表的form的action里的提交地址后面加上${queryUrl}即可,如果有查询条件,跳转分页时自动会跟上查询的条件,即使查询结果多到已经分页仍然可以正确的在结果里分页。