JavaWeb分页-----PageBean.java

本文介绍了一个通用的PageBean类实现,该类用于处理分页逻辑,包括记录总数、每页显示条数、当前页号等属性,并提供计算起始行、结束行的方法及展示页数的数组。
  1 package com.zzuli.util;
  2 
  3 import java.util.List;
  4 
  5 /**
  6  * PageBean类
  7  * @author hejjon
  8  * @date 2019年6月8日 下午2:18:50
  9  * @param <T>
 10  */
 11 public class PageBean<T> {
 12     private int size;                // 每页要显示的记录条数    指定默认为5
 13     private int index;                // 当前页号
 14     private int totalPageCount;        // 总页数
 15     private int totalCount;            // 记录总条数
 16     
 17     private int[] numbers;            // 展示页数的数组
 18     private List<T> list;            // 要显示到页面的数据集合
 19     
 20     /**
 21      * 获取起始下标
 22      * @return
 23      */
 24     public int getStartRow() {
 25         return (index - 1) * size;
 26     }
 27     
 28     /**
 29      * 获取结束下标
 30      * @return
 31      */
 32     public int getEndRow() {
 33         return index * size;
 34     }
 35 
 36     /**
 37      * 获取每页要显示的记录条数
 38      * @return
 39      */
 40     public int getSize() {
 41         return size;
 42     }
 43 
 44     /**
 45      * 设置每页要显示的记录条数
 46      * @param size
 47      */
 48     public void setSize(int size) {
 49         if (size > 0) {
 50             this.size = size;
 51         }
 52     }
 53 
 54     /**
 55      * 获取当前页号
 56      * @return
 57      */
 58     public int getIndex() {
 59         
 60         if (totalPageCount == 0) {
 61             return 0;
 62         }
 63         return index;
 64     }
 65 
 66     /**
 67      * 设置当前页号
 68      * @param index
 69      */
 70     public void setIndex(int index) {
 71         if (index > 0) {
 72             this.index = index;
 73         }
 74     }
 75 
 76     /**
 77      * 获取记录总条数
 78      * @return
 79      */
 80     public int getTotalCount() {
 81         return totalCount;
 82     }
 83 
 84     /**
 85      * 设置记录总条数
 86      * @param totalCount
 87      */
 88     public void setTotalCount(int totalCount) {
 89         if (totalCount > 0) {
 90             this.totalCount = totalCount;
 91             setTotalPageCountByRs();        // 根据总记录数计算总页数
 92         }
 93     }
 94 
 95     /**
 96      * 获取总页数
 97      * @return
 98      */
 99     public int getTotalPageCount() {
100         return totalPageCount;
101     }
102 
103 
104     /**
105      * 根据总记录条数计算总页数
106      */
107     private void setTotalPageCountByRs() {
108         if (this.size > 0 && this.totalCount > 0 && this.totalCount % this.size == 0) {
109             this.totalPageCount = this.totalCount / this.size;
110         } else if (this.size > 0 && this.totalCount > 0 && this.totalCount % this.size > 0) {
111             this.totalPageCount = this.totalCount / this.size + 1;
112         } else {
113             this.totalPageCount = 0;
114         }
115         // 设置展示页数数组
116         setNumbers(totalPageCount);
117     }
118 
119     /**
120      * 获取展示页数的数组
121      * @return
122      */
123     public int[] getNumbers() {
124         return numbers;
125     }
126 
127     /**
128      * 设置展示页数的数组
129      * @param numbers
130      */
131     public void setNumbers(int totalPageCount) {
132         if (totalPageCount > 0) {
133             // 当前数组长度
134             int[] numbers = new int[totalPageCount > 10 ? 10 : totalPageCount];
135             int k = 0;
136             
137             for (int i = 0; i < totalPageCount; i++) {
138                 if ((i >= index - (numbers.length / 2 + 1) || i >= totalPageCount - numbers.length)
139                         && k < numbers.length) {
140                     numbers[k] = i + 1;
141                     k++;
142                 } else if (k >= numbers.length) {
143                     break;
144                 }
145             }
146             this.numbers = numbers;
147         }
148 
149     }
150 
151     /**
152      * 获取要显示到页面的数据集合
153      * @return
154      */
155     public List<T> getList() {
156         return list;
157     }
158 
159     /**
160      * 设置要显示到页面的数据集合
161      * @param list
162      */
163     public void setList(List<T> list) {
164         this.list = list;
165     }
166 }        // end PageBean

 

转载于:https://www.cnblogs.com/hejjon/p/10991800.html

/* * @(#)PageControl.java 1.00 2004-9-22 * * Copyright 2004 2004 . All rights reserved. * PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package com.hexiang.utils; /** * PageControl, 分页控制, 可以判断总页数和是否有上下页. * * 2008-07-22 加入输出上下分页HTML代码功能 * * @author HX * @version 1.1 2008-9-22 */ public class PageBean { /** 每页显示记录数 */ private int pageCount; /** 是否有上一页 */ private boolean hasPrevPage; /** 记录总数 */ private int recordCount; /** 是否有下一页 */ private boolean hasNextPage; /**总页面数 */ private int totalPage; /** 当前页码数 */ private int currentPage; /** * 分页前的页面地址 */ private String pageUrl; /** * 输出分页 HTML 页面跳转代码, 分链接和静态文字两种. * 2008-07-22 * @return HTML 代码 */ public String getPageJumpLinkHtml() { if(StringUtil.isEmpty(pageUrl)) { return ""; } // 检查是否有参数符号, 没有就加上一个? if(pageUrl.indexOf('?') == -1) { pageUrl = pageUrl + '?'; } StringBuffer buff = new StringBuffer("<span id='pageText'>"); // 上一页翻页标记 if(currentPage > 1) { buff.append("[ <a href='" + pageUrl + "&page=" + (currentPage - 1) + "' title='转到第 " + (currentPage - 1) + " 页'>上一页</a> ] "); } else { buff.append("[ 上一页 ] "); } // 下一页翻页标记 if(currentPage < getTotalPage()) { buff.append("[ <a href='" + pageUrl + "&page=" + (currentPage + 1)+ "' title='转到第 " + (currentPage + 1) + " 页'>下一页</a> ] "); } else { buff.append("[ 下一页 ] "); } buff.append("</span>"); return buff.toString(); } /** * 输出页码信息: 第${currentPage}页/共${totalPage}页 * @return */ public String getPageCountHtml() { return "第" + currentPage + "页/共" + getTotalPage() + "页"; } /** * 输出 JavaScript 跳转函数代码 * @return */ public String getJavaScriptJumpCode() { if(StringUtil.isEmpty(pageUrl)) { return ""; } // 检查是否有参数符号, 没有就加上一个? if(pageUrl.indexOf("?") == -1) { pageUrl = pageUrl + '?'; } return "<script>" + "// 页面跳转函数\n" + "// 参数: 包含页码的表单元素,例如输入框,下拉框等\n" + "function jumpPage(input) {\n" + " // 页码相同就不做跳转\n" + " if(input.value == " + currentPage + ") {" + " return;\n" + " }" + " var newUrl = '" + pageUrl + "&page=' + input.value;\n" + " document.location = newUrl;\n" + " }\n" + " </script>"; } /** * 输出页面跳转的选择框和输入框. 示例输出: * <pre> 转到 <!-- 输出 HTML SELECT 元素, 并选中当前页面编码 --> <select onchange='jumpPage(this);'> <c:forEach var="i" begin="1" end="${totalPage}"> <option value="${i}" <c:if test="${currentPage == i}"> selected </c:if> >第${i}页</option> </c:forEach> </select> 输入页码:<input type="text" value="${currentPage}" id="jumpPageBox" size="3"> <input type="button" value="跳转" onclick="jumpPage(document.getElementById('jumpPageBox'))"> </pre> * @return */ public String getPageFormJumpHtml() { String s = "转到\n" + "\t <!-- 输出 HTML SELECT 元素, 并选中当前页面编码 -->\n" + " <select onchange='jumpPage(this);'>\n" + " \n"; for(int i = 1; i <= getTotalPage(); i++ ) { s += "<option value=" + i + "\n"; if(currentPage == i) { s+= " selected "; } s += "\t>第" + i + "页</option>\n"; } s+= " </select>\n" + " 输入页码:<input type=\"text\" value=\"" + currentPage + "\" id=\"jumpPageBox\" size=\"3\"> \n" + " <input type=\"button\" value=\"跳转\" onclick=\"jumpPage(document.getElementById('jumpPageBox'))\"> "; return s; } /** * 进行分页计算. */ private void calculate() { if (getPageCount() == 0) { setPageCount(1); } totalPage = (int) Math.ceil(1.0 * getRecordCount() / getPageCount()); // 总页面数 if (totalPage == 0) totalPage = 1; // Check current page range, 2006-08-03 if(currentPage > totalPage) { currentPage = totalPage; } // System.out.println("currentPage=" + currentPage); // System.out.println("maxPage=" + maxPage); // // Fixed logic error at 2004-09-25 hasNextPage = currentPage < totalPage; hasPrevPage = currentPage > 1; return; } /** * @return Returns the 最大页面数. */ public int getTotalPage() { calculate(); return totalPage; } /** * @param currentPage * The 最大页面数 to set. */ @SuppressWarnings("unused") private void setTotalPage(int maxPage) { this.totalPage = maxPage; } /** * 是否有上一页数据 */ public boolean hasPrevPage() { calculate(); return hasPrevPage; } /** * 是否有下一页数据 */ public boolean hasNextPage() { calculate(); return hasNextPage; } // Test public static void main(String[] args) { PageBean pc = new PageBean(); pc.setCurrentPage(2); pc.setPageCount(4); pc.setRecordCount(5); pc.setPageUrl("product/list.do"); System.out.println("当前页 " + pc.getCurrentPage()); System.out.println("有上一页 " + pc.hasPrevPage()); System.out.println("有下一页 " + pc.hasNextPage()); System.out.println("总页面数 " + pc.getTotalPage()); System.out.println("分页 HTML 代码 " + pc.getPageJumpLinkHtml()); } /** * @return Returns the 当前页码数. */ public int getCurrentPage() { return currentPage; } /** * 设置当前页码, 从 1 开始. * @param currentPage * The 当前页码数 to set. */ public void setCurrentPage(int currentPage) { if (currentPage <= 0) { currentPage = 1; } this.currentPage = currentPage; } /** * @return Returns the recordCount. */ public int getRecordCount() { return recordCount; } /** * @param recordCount * The recordCount to set. */ public void setRecordCount(int property1) { this.recordCount = property1; } /** * @return Returns the 每页显示记录数. */ public int getPageCount() { return pageCount; } /** * @param pageCount * The 每页显示记录数 to set. */ public void setPageCount(int pageCount) { this.pageCount = pageCount; } public String getPageUrl() { return pageUrl; } public void setPageUrl(String value) { pageUrl = value; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值