java 分页工具类(提问)

Python035

java 分页工具类(提问),第1张

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.utils

import 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