Java實(shí)現(xiàn)的分頁(yè)工具類與用法示例
本文實(shí)例講述了Java實(shí)現(xiàn)的分頁(yè)工具類與用法。分享給大家供大家參考,具體如下:
今天閑來(lái)沒(méi)事,寫(xiě)了一個(gè)頁(yè)面的分頁(yè)工具類,具有很好的兼容性與實(shí)用性哦。
不管怎么樣,先來(lái)瞧一瞧:
package com.bw.utils;
/**
* 分頁(yè)工具類
*
* @author H.ros
*
*/
public class PageUtils2 {
// 當(dāng)前頁(yè)(從頁(yè)面獲取的當(dāng)前頁(yè)碼,未計(jì)算)
private int currentPage;
// 前一頁(yè)
private int prevPage;
// 下一頁(yè)
private int nextPage;
// 尾頁(yè)
private int lastPage;
// 總記錄數(shù)
private int count;
// 每頁(yè)的條數(shù)
private int pageSize = 3;
// 分頁(yè)計(jì)入數(shù)(使用時(shí)調(diào)用的初始頁(yè),計(jì)算后)
private int pageRecord;
// 頁(yè)面分頁(yè)模型(傳入頁(yè)面使用的DOM)
private String page;
// 有參構(gòu)造器
public PageUtils2(String currentPage, int count, int pageSize) {
init(currentPage, count, pageSize);
initLastPage();
initCurrentPage();
initPrevPage();
initNextPage();
initPageRecord();
initPage();
}
// 初始化三個(gè)重要元素
private void init(String currentPage, int count, int pageSize) {
if (currentPage == null || currentPage == "" || currentPage == "0") {
currentPage = "1";
}
this.currentPage = Integer.parseInt(currentPage);
this.count = count;
this.pageSize = pageSize;
}
// 初始化尾頁(yè)
private void initLastPage() {
if (count % pageSize == 0) {
lastPage = count / pageSize;
} else {
lastPage = count / pageSize + 1;
}
}
// 初始化并矯正當(dāng)前頁(yè)(防止外部訪問(wèn)出錯(cuò))
private void initCurrentPage() {
if (currentPage < 1) {
currentPage = 1;
} else if (currentPage > lastPage) {
currentPage = lastPage;
}
}
// 初始化上一頁(yè)
private void initPrevPage() {
if (currentPage != 1) {
prevPage = currentPage - 1;
}else{
prevPage = 1;
}
}
// 初始化下一頁(yè)
private void initNextPage() {
if (currentPage != lastPage) {
nextPage = currentPage + 1;
}else{
nextPage = lastPage;
}
}
// 初始化分頁(yè)計(jì)入數(shù)
private void initPageRecord() {
pageRecord = (currentPage - 1) * pageSize;
if(pageRecord < 0){
pageRecord = 0;
}
}
// 初始化頁(yè)面分頁(yè)模型(按鍵中的class屬性是bootstrap的樣式)
private void initPage() {
page = "第" + currentPage + "/" + lastPage + "頁(yè),共" + count + "條記錄。";
page += "<input type='button' value='首頁(yè)' οnclick='page(1)' class='btn btn-sm'/>";
page += "<input type='button' value='上一頁(yè)' οnclick='page(" + prevPage + ")' class='btn btn-sm'/>";
page += "<input type='button' value='下一頁(yè)' οnclick='page(" + nextPage + ")' class='btn btn-sm'/>";
page += "<input type='button' value='尾頁(yè)' οnclick='page(" + lastPage + ")' class='btn btn-sm'/>";
}
/*
* 對(duì)外訪問(wèn)通道
*/
public int getCurrentPage() {
return currentPage;
}
public int getPrevPage() {
return prevPage;
}
public int getNextPage() {
return nextPage;
}
public int getLastPage() {
return lastPage;
}
public int getCount() {
return count;
}
public int getPageSize() {
return pageSize;
}
public int getPageRecord() {
return pageRecord;
}
public String getPage() {
return page;
}
}
使用方法:
里面很多的地方都會(huì)計(jì)算好,使用時(shí)只用傳入三個(gè)參數(shù):
//currentPage是從前臺(tái)傳來(lái)的當(dāng)前頁(yè)碼,count是數(shù)據(jù)的總統(tǒng)計(jì)數(shù),pageSize是每頁(yè)顯示的條數(shù), //count必須是數(shù)據(jù)中的查詢結(jié)果哦。這樣才能與前臺(tái)保持頁(yè)碼一致。 PageUtils util = new PageUtils(currentPage, count, pageSize);
然后直接將它的一個(gè)Page屬性傳入前臺(tái)頁(yè)面就行:
mv.addObject("page", util.getPage());
在前臺(tái)頁(yè)面直接用EL表達(dá)式接收解析:
${page}
在js中要設(shè)置一個(gè)函數(shù):
function page(){}
//因?yàn)楣ぞ哳愔刑砑拥氖莖nclick的js點(diǎn)擊事件,我們必須使用js的一個(gè)函數(shù)來(lái)進(jìn)行后臺(tái)處理;
//如果不想使用,在工具類中刪除即可。
若有不對(duì)的地方,還望大神們不吝賜教。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Java中的clone()和Cloneable接口實(shí)例
這篇文章主要介紹了Java中的clone()和Cloneable接口實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
restTemplate實(shí)現(xiàn)跨服務(wù)API調(diào)用方式
這篇文章主要介紹了restTemplate實(shí)現(xiàn)跨服務(wù)API調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-07-07
Spring JPA 增加字段執(zhí)行異常問(wèn)題及解決
這篇文章主要介紹了Spring JPA 增加字段執(zhí)行異常問(wèn)題及解決,具有很好的參考價(jià)值,2022-06-06
SpringBoot Event 事件如何實(shí)現(xiàn)異步延遲執(zhí)行
這篇文章主要介紹了Spring Boot Event 事件如何實(shí)現(xiàn)異步延遲執(zhí)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
java?LeetCode刷題稍有難度的貪心構(gòu)造算法
這篇文章主要為大家介紹了java?LeetCode刷題稍有難度的貪心構(gòu)造題解示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Java如何使用httpclient檢測(cè)url狀態(tài)及鏈接是否能打開(kāi)
這篇文章主要介紹了Java如何使用httpclient檢測(cè)url狀態(tài)及鏈接是否能打開(kāi),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

