pageFile.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%--分页显示的开始 --%>
<div style="text-align:center">
共${page.totalPageNum}页/第${page.currentPageNum}页
<a href="${pageContext.request.contextPath}/${page.url}&num=1">首页</a>
<a href="${pageContext.request.contextPath}/${page.url}&num=${page.prePageNum}">上一页</a>
<%--显示的页码,使用forEach遍历显示的页面 --%>
<c:forEach begin="${page.startPage}" end="${page.endPage}" var="pagenum">
<a href="${pageContext.request.contextPath}/${page.url}&num=${pagenum}">${pagenum}</a>
</c:forEach>
<a href="${pageContext.request.contextPath}/${page.url}&num=${page.nextPageNum}">下一页</a>
<a href="${pageContext.request.contextPath}/${page.url}&num=${page.totalPageNum}">末页</a>
<input type="text" id="pagenum" name="pagenum" size="1"/><input type="button" value="前往" onclick="jump()" />
<script type="text/javascript">
function jump(){
var totalpage = ${page.totalPageNum}
var pagenum = document.getElementById("pagenum").value
//判断输入的是一个数字
var reg =/^[1-9][0-9]{0,1}$/
if(!reg.test(pagenum)){
//不是一个有效数字
alert("请输入符合规定的数字")
return
}
//判断输入的数字不能大于总页数
if(parseInt(pagenum)>parseInt(totalpage)){
//超过了总页数
alert("不能大于总页数")
return
}
//转向分页显示的Servlet
window.location.href="${pageContext.request.contextPath}/${page.url}&num="+pagenum
}
</script>
</div>
<%--分页显示的结束--%>
pageModel.java
package cn.itcast.utilsimport java.util.List
/**
* 存放分页相关的数据
*
*/
public class PageModel {
//基本属性
private int currentPageNum//当前页数,由用户指定 *
private int pageSize = 5 //每页显示的条数,固定的 *
private int totalRecords//总记录条数,数据库查出来的 *
private int totalPageNum//总页数,计算出来的 *
private int startIndex//每页开始记录的索引,计算出来的 *
private int prePageNum//上一页 *
private int nextPageNum//下一页 *
private List records//已经分好页的结果集,该list中只有10条记录
//扩展属性
//一共每页显示9个页码按钮
private int startPage//开始页码
private int endPage//结束页码
//完善属性
private String url
//要想使用我的分页,必须给我两个参数。一个是要看哪一页,另一个是总记录条数
public PageModel(int currentPageNum,int totalRecords,int pageSize){
this.currentPageNum = currentPageNum
this.totalRecords = totalRecords
this.pageSize=pageSize
//计算查询记录的开始索引
startIndex = (currentPageNum-1)*pageSize
//计算总页数
totalPageNum = totalRecords%pageSize==0?(totalRecords/pageSize):(totalRecords/pageSize+1)
startPage = currentPageNum - 4 //5
endPage = currentPageNum + 4 //13
//看看总页数够不够9页
if(totalPageNum>9){
//超过了9页
if(startPage < 1){
startPage = 1
endPage = startPage+8
}
if(endPage>totalPageNum){
endPage = totalPageNum
startPage = endPage-8
}
}else{
//不够9页
startPage = 1
endPage = totalPageNum
}
}
public String getUrl() {
return url
}
public void setUrl(String url) {
this.url = url
}
public int getStartPage() {
return startPage
}
public void setStartPage(int startPage) {
this.startPage = startPage
}
public int getEndPage() {
return endPage
}
public void setEndPage(int endPage) {
this.endPage = endPage
}
public int getPrePageNum() {
prePageNum = currentPageNum-1
if(prePageNum<1){
prePageNum = 1
}
return prePageNum
}
public int getNextPageNum() {
nextPageNum = currentPageNum+1
if(nextPageNum>totalPageNum){
nextPageNum = totalPageNum
}
return nextPageNum
}
public int getCurrentPageNum() {
return currentPageNum
}
public void setCurrentPageNum(int currentPageNum) {
this.currentPageNum = currentPageNum
}
public int getPageSize() {
return pageSize
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize
}
public int getTotalRecords() {
return totalRecords
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords
}
public int getTotalPageNum() {
return totalPageNum
}
public void setTotalPageNum(int totalPageNum) {
this.totalPageNum = totalPageNum
}
public int getStartIndex() {
return startIndex
}
public void setStartIndex(int startIndex) {
this.startIndex = startIndex
}
public void setPrePageNum(int prePageNum) {
this.prePageNum = prePageNum
}
public void setNextPageNum(int nextPageNum) {
this.nextPageNum = nextPageNum
}
public List getRecords() {
System.out.println("GETRecords....")
return records
}
public void setRecords(List records) {
this.records = records
}
}
下面是我的代码:PageUtil.java
1 package util
2
3 import java.util.Map
4
5 /**
6 * 分页工具类
7 * @author lyh
8 *
9 */
10 public class PageUtil {
11 private int total //总数
12 private int element //每夜显示数
13 private String url //访问的url
14 private Map<String,Object>keys //记忆参数
15 private int p //当前页数
16 private int page //总页数
17
18 /**
19 * 构造传参数
20 * @param total
21 * @param element
22 * @param url
23 * @param keys
24 * @param p
25 */
26 public PageUtil(int total,int element,String url,Map<String,Object>keys,int p){
27 this.total = total
28 this.element = element
29 this.url = url
30 this.keys = keys
31 this.p = p
32 if(this.total != 0 &&this.total%this.element == 0){
33 this.page = this.total/this.element
34 }else{
35 this.page = this.total/this.element+1
36 }
37 }
38
39 /**
40 * 拼接分页访问的url
41 * @param p
42 * @param keys
43 * @return 拼接好的带参数url
44 */
45 private String createFullUrl(int p,Map<String,Object>keys){
46 StringBuffer buf = new StringBuffer(this.url)
47 buf.append("?p="+p)
48