java web分页代码


在web开发中,经常会遇到一些数据很多时,我们便需要分页存放,写一个小例子,供以后自己使用


/**
 *java分页程序
 * @author yzz
 */
public class Pagination {
    /***
     *当前页码
     * 总页数
     * 每页显示记录数
     * 总记录数
     */
    private int pageNo = 0;
    private int pageCount = 0;   //总页数
    private int pageSize = 10;    //每页显示记录
    private int countSize = 0;      //总记录数
    
    private String pageBar;
    private String numPageBar;
    private String url;

    public int getPageNo() {
        return pageNo;
    }

    public void setPageNo(int pageNo) {
        this.pageNo = pageNo;
    }

    public int getPageCount() {
        if (countSize != 0)
        {
            /***
             * 如果总记录数能够整除每页的记录数 
             */
            if(countSize%pageSize == 0){
                pageCount = countSize/pageSize;
            }else {
                pageCount = countSize/pageSize + 1;
            }
        }
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getCountSize() {
        return countSize;
    }

    public void setCountSize(int countSize) {
        this.countSize = countSize;
    }

    public String getPageBar() {
        pageCount = getPageCount();
        if(pageCount != 0) {
            
            if(pageNo < 1) {
                pageNo = 1; //如果当前页小于1则默认1
            }
            if(pageNo > pageCount) {
                pageNo = pageCount;
            }
            StringBuilder sb = new StringBuilder();
            sb.append("每页 :").append(pageSize).
                    append("  页次: ").append(pageNo).append("/").append(pageCount).
                    append(" 总计: ").append(countSize).append(" ");
             
            sb.append("<ul class = \"pagination pagination-small border-main \">");
             if (pageNo == 1) {
                sb.append("<li class=\"disabled\"><a href=\"#\">首页</a> </li>");
                sb.append("<li class=\"disabled\"><a href=\"#\">上页</a> </li>");
            } else {
                sb.append("<li><a href=\"").append(url).append("&pageNo=").append("1\">首页</a> </li>");
                sb.append("<li><a href=\"").append(url).append("&pageNo=").append(pageNo - 1).append("\">上页</a> </li>");
            }

            if (pageNo == pageCount) {
                sb.append("<li class=\"disabled\"><a href=\"#\">下页</a> </li>");
                sb.append("<li class=\"disabled\"><a href=\"#\">尾页</a> </li>");
            } else {
                sb.append("<li><a href=\"").append(url).append("&pageNo=").append(pageNo + 1).append("\">下页</a> </li>");
                sb.append("<li><a href=\"").append(url).append("&pageNo=").append(pageCount).append("\">尾页</a> </li>");
            }
            sb.append("</ul>");
            pageBar = sb.toString();
        } else {
            pageBar = "";
        }
        
        return pageBar;
    }

    public String getNumPageBar() {
        pageCount = getPageCount();
        
        if (pageCount != 0) {
            //判断当前页号的合法性
            if (pageNo < 1) {
                pageNo = 1;
            }
            if (pageNo > pageCount) {
                pageNo = pageCount;
            }
            StringBuilder sb = new StringBuilder();
            //计算当前页所在的组
            int group = pageNo / 5 + (pageNo % 5 == 0 ? 0 : 1);
            int start = (group - 1) * 5 + 1;
            int end = start + 4;
//            System.out.println("group:" + group + ";start:" + start + ";end:" + end);
            if (end > pageCount) {
                end = pageCount;
            }

            sb.append("<ul class=\"pagination pagination-small border-main\">");
            if (start > 1) {
                sb.append("<li><a href=\"").append(url).append("&pageNo=").
                        append(start - 1).append("\"><</a></li>");
            }
            for (int i = start; i <= end; i++) {
                if (pageNo != i) {
                    sb.append("<li><a href=\"").append(url).append("&pageNo=").append(i).
                            append("\">").append(i).append("</a></li>");
                } else {
                    sb.append("<li class=\"active\"><a href=\"#\">").append(i).append("</a></li>");
                }
            }
            if (end < pageCount) {
                sb.append("<li><a href=\"").append(url).append("&pageNo=").append(end + 1).append("\">></a></li>");
            }
            sb.append("</ul>");
            numPageBar = sb.toString();
        } else {
            numPageBar = "";
        }
        return numPageBar;
    }

    public void setUrl(String url) {
        this.url = url;
    }
    
    
}

显示效果: [页面总数小于等于10,全部显示,当前页特殊显示] 上一页 1 2 3 4 5 6 7 8 9 10 下一页 [页面总数大于10,部分显示,当前页特殊显示] 上一页 1 2 3 … 20 下一页 [当前页面为首页时,上一页不可用] 上一页 1 2 3 4 … 20 下一页 上一页 1 2 3 4 5 … 20 下一页 上一页 1 2 3 4 5 6 … 20 下一页 上一页 1 … 3 4 5 6 7 … 20 下一页 上一页 1 … 14 15 16 17 18 ... 20 下一页 上一页 1 … 15 16 17 18 19 20 下一页 上一页 1 … 16 17 18 19 20 下一页 上一页 1 … 17 18 19 20 下一页 上一页 1 … 18 19 20 下一页[当前页面为末页时,下一页不可用] 算法提取: 0.页码显示规则: 当前页为首页时不显示上一页; 上一页 1 2 3 … 20 下一页 当前页为尾页时不显示下一页; 上一页 1 … 17 18 19 20 下一页 1.页面总数(n)<=10 { 显示全部页码:上一页 1 2 3 4 5 6 7 8 9 10 下一页 } 2.页面总数(n) > 10 { 2.1 当前页码 <= 4 { 左侧显示所有 + 当前页码 + 右侧2个页码 + ... + 尾页 上一页 1 2 3 … 20 下一页 上一页 1 2 3 4 … 20 下一页 上一页 1 2 3 4 5 … 20 下一页 上一页 1 2 3 4 5 6 … 20 下一页 } 2.2 当前页码 > 4 且<= 页面总数(n) - 3 { 首页 + ... + 左侧2个页码 + 当前页码 + 右侧2个页码 + ... + 尾页 上一页 1 … 3 4 5 6 7 … 20 下一页 上一页 1 … 14 15 16 17 18 ... 20 下一页 } 2.3 当前页码 > 页面总数(n) - 3 { 首页 + ... + 左侧2个页面 + 当前页码 + 右侧显示所有 上一页 1 … 15 16 17 18 19 20 下一页 上一页 1 … 16 17 18 19 20 下一页 上一页 1 … 17 18 19 20 下一页 上一页 1 … 18 19 20 下一页 } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值