--------------------------------------------------------------------------------------
Pagination.java:
// 分页信息
private int nowpage;// 当前页
private int countrecord;// 总记录
private int countpage;// 总页数
public static final int PAGESIZE = 5;// 每页显示的记录数
private int startpage;// 页面中的起始页
private int endpage;// 页面中的结束页
private final int SHOWPAGE = 6;// 页面中显示的总页数 baidu,google显示的总页数是20
//分页实现代码部分
/** 根据当前页及总记录数来构造分页对象 */
public Pagination(int nowpage, int countrecord) {
this.nowpage = nowpage;
this.countrecord = countrecord;
/** 计算总页数 */
this.countpage = this.countrecord % this.PAGESIZE == 0 ? this.countrecord
/ this.PAGESIZE
: this.countrecord / this.PAGESIZE + 1;
/** 计算startpage与endpage的值 */
/** 总页数数是否小于4 */
if (this.countpage < (this.SHOWPAGE / 2 + 1)) {
this.startpage = 1; // 页面中起始页就是1
this.endpage = this.countpage;// 页面中的最终页就是总页数
} else {
/** else中是总页数大于4的情况 */
/** 首先当前页的值是否小于等于4 */
if (this.nowpage <= (this.SHOWPAGE / 2 + 1)) {
this.startpage = 1;
this.endpage = this.nowpage + 2;
/** 判断页面的最终页是否大于总页数 */
if (this.endpage >= this.countpage) {
this.endpage = this.countpage;
}
} else {
this.startpage = this.nowpage - 3;
this.endpage = this.nowpage + 2;
if (this.endpage >= this.countpage) {
this.endpage = this.countpage;
if (this.countpage < this.SHOWPAGE) {
this.startpage = 1;
} else {
this.startpage = this.endpage - 5;
}
}
}
}
}
在此省略setter/getter方法
-------------------------------------------------------------------------------
servlet部分
request.setCharacterEncoding("utf8");
String npage = request.getParameter("nowpage");
int nowpage =1;
if(npage!=null){
nowpage=Integer.valueOf(npage);
}
AdminServiceImpl adminServiceImpl = new AdminServiceImpl();
int countrecord = adminServiceImpl.getCountRecord();
List<Admin> allentities = adminServiceImpl.findByNowPage(nowpage, Pagination.PAGESIZE);
Pagination<Admin> pageination = new Pagination<Admin>(nowpage, countrecord);
pageination.setAllentities(allentities);
pageination.setUrl(request.getContextPath()+"/listAdmins.do");
request.setAttribute("pagination", pageination);
request.getRequestDispatcher("admin/ListAdmins.jsp").forward(request, response);
-------------------------------------------------------------------------------
pagination.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
总共${pagination.countpage}页 总共${pagination.countrecord} 记录
<c:if test="${pagination.nowpage>1}">
<a href="${pagination.url}?nowpage=${pagination.nowpage-1}">上一页</a>
</c:if>
<c:forEach var="sequence" begin="${pagination.startpage}" end="${pagination.endpage}">
[<span> <a href="${pagination.url}?nowpage=${sequence}">${sequence}</a> </span>]
</c:forEach>
<c:if test="${pagination.nowpage<pagination.countpage}">
<a href="${pagination.url}?nowpage=${pagination.nowpage+1}"> 下一页</a>
</c:if>