工具代码如下:

public final class PageUtil {

    private int perRecords = 10;  //每页记录数
    private int totalRecords;   //总记录数
    private int curPage = 1;       //当前页数
    private int totalPages;   //总页数
    private int remainderRecord;   //最后一页不足记录

    public PageUtil() {
    }

    /**
     * @param totalRecords 总记录 
     * @param curPage 当前页数
     * */
    public PageUtil(int totalRecords, int curPage) {

        this(totalRecords, 10, curPage);
    }
	
    
    /**
     * @param totalRecords 总记录 
     * @param perRecords  每页记录数
     * @param curPage 当前页数
     * */
    public PageUtil(int totalRecords, int perRecords, int curPage) {
        this.totalRecords = totalRecords;
        this.perRecords = perRecords;
        this.curPage = curPage;
        init();
    }

    public int getPerRecords() {
        return perRecords;
    }

    public void setPerRecords(int perRecords) {
        this.perRecords = perRecords;
    }

    public int getTotalRecords() {
        return totalRecords;
    }

    public void setTotalRecords(int totalRecords) {
        this.totalRecords = totalRecords;
    }

    public int getCurPage() {
        return curPage;
    }

    public void setCurPage(int curPage) {
        this.curPage = curPage;
    }

    //计算总页数
    public void init() {
        if (totalRecords % perRecords == 0) {
            totalPages = totalRecords / perRecords;
        } else {
            totalPages = totalRecords / perRecords + 1;
            this.remainderRecord =  perRecords - (totalRecords % perRecords);
        }
    }

    /**
     * 返回查找起始记录
     * */
    public int getStart() {
        if (curPage < 1) {
            curPage = 1;
        }
        if (curPage > totalPages) {
            curPage = totalPages;
        }
        return ( curPage - 1 ) <= 0 ? 0 : (curPage - 1) * perRecords;
    }
    
    /**
     * 返回查找终止记录
     * */
    public int getEnd() {
        return perRecords;
    }

    /**
     * 返回总页数
     * */
    public int getTotalPages() {
        return totalPages;
    }

    /**
     * 返回前一页
     * */
    public int getPrevPage() {
        if (curPage > 1) {
            return curPage - 1;
        }
        return 1;
    }
    /**
     * 返回上一页
     * */
    public int getNextPage() {
        if (curPage < totalPages) {
            return curPage + 1;
        }
        return totalPages;
    }
    
    /**
     * 返回最后一页
     * */
    public int getRemainderRecord() {
		return remainderRecord;
	}

	public void setRemainderRecord(int remainderRecord) {
		this.remainderRecord = remainderRecord;
	}

	/**
	 * 返回button类型的分页
	 * @param currentPageNo
	 * @param maxPageNo
	 * @return
	 */
	public static String getPageBtnlink(int currentPageNo, int maxPageNo) {

		currentPageNo = currentPageNo > maxPageNo ? maxPageNo : currentPageNo;
		int begainNo = currentPageNo - 5 > 0 ? currentPageNo - 5 : 1;
		int endNo = begainNo + 9 > maxPageNo ? maxPageNo : begainNo + 9;
		StringBuffer bf = new StringBuffer();

		if (maxPageNo > 1) {
			bf.append(currentPageNo > 1 ? ("
1 ? currentPageNo - 1 : 1) + "\" >上一页") : " 上一页");for (int i = begainNo; i <= endNo; i++) {if (i == currentPageNo) {bf.append(" " + i + "");} elsebf.append(" " + i+ "");}bf.append(currentPageNo < maxPageNo ? (" maxPageNo ? maxPageNo : currentPageNo + 1) + "\" >下一页") : " 下一页");return bf.toString();}return "";}}

测试例子如下:

package com.anlt.test;

import com.anlt.util.PageUtil;

public class PageTest {

	public static void main(String[] args) {
		
	    //总共100条记录 ,当前页为3
		PageUtil p = new PageUtil(100,0);
		System.out.println("+------------------------------------+");
		System.out.println("总记录数:" + p.getTotalRecords());
		System.out.println("每页记录数:" + p.getPerRecords());
		System.out.println("总页数:" + p.getTotalPages());
		System.out.println("当前页数:" + p.getCurPage());
		System.out.println("最后一页不足记录数:" + p.getRemainderRecord());
		System.out.println("查找记录区间limit=[" + p.getStart() + ","+ p.getEnd() + "]");
		System.out.println("+------------------------------------+");
	}

}

运行结果:

+---------------------------------------------------------------+
总记录数:102
每页记录数:10
总页数:11
当前页数:1
最后一页不足记录数:8
查找记录区间limit=[0,10]
+---------------------------------------------------------------+

分页样式page.css

/* CSS Document */

.pagination {
    border-radius: 4px;
    display: inline-block;
    margin: 10px 0;
    padding-left: 0;
}
/*右对齐*/
.page-link-content {
    text-align: right;
}
.pagination > li {
    display: inline;
}
.pagination-sm > li:first-child > a, .pagination-sm > li:first-child > span {
    border-bottom-left-radius: 3px;
    border-top-left-radius: 3px;
}
.pagination > li:first-child > a, .pagination > li:first-child > span {
    border-bottom-left-radius: 4px;
    border-top-left-radius: 4px;
    margin-left: 0;
}
.pagination > .disabled > span, .pagination > .disabled > span:hover, .pagination > .disabled > span:focus, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus {
    background-color: #fff;
    border-color: #ddd;
    color: #999;
    cursor: not-allowed;
}
.pagination > li > a, .pagination > li > span {
    color: #888;
}
.pagination-sm > li > a, .pagination-sm > li > span {
    font-size: 12px;
    padding: 5px 10px;
}
.pagination > li > a, .pagination > li > span {
    background-color: #fff;
    border: 1px solid #ddd;
    color: #428bca;
    cursor: pointer;
    float: left;
    line-height: 1.42857;
    margin-left: -1px;
    padding: 6px 12px;
    position: relative;
    text-decoration: none;
}
.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus {
    background-color: #428bca;
    border-color: #428bca;
    color: #fff;
    cursor: default;
    z-index: 2;
}

 

分页页面page.html

  • 上一页
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 下一页

 

页面运行结果:

 


 

更多推荐

java分页工具代码和html、css分页码样式