本文提供一個名為 PageCt 的 Java 分頁類別完整原始碼,封裝分頁邏輯計算,適用於 JSP 應用程式。
// PageCt.java 分頁類別
/*
*** @version ***********
*** Created on 2001年6月25日, 下午14:41
**************************************
*/
package vod;
import java.sql.*;
import java.util.*;
public class PageCt {
private long l_start; // 起始記錄
private long l_end; // 結束記錄
private long l_curpage; // 目前頁碼
private long l_totalnum; // 總記錄數
private int int_num = 5; // 每頁筆數(預設 5,註解寫 10)
private long l_totalpage; // 總頁數
public void Init(long currentpage, long totalnum) {
l_curpage = currentpage;
l_totalnum = totalnum;
if (currentpage >= 0) {
if (currentpage >= (long)Math.ceil((double)l_totalnum / (double)int_num))
l_curpage = (long)Math.floor((double)l_totalnum / (double)int_num);
else
l_curpage = currentpage;
} else {
l_curpage = 0;
}
l_start = l_curpage * int_num;
l_end = l_start + int_num;
if (l_end > l_totalnum) l_end = l_totalnum;
l_totalpage = (long)Math.ceil((double)l_totalnum / (double)int_num);
}
public long getCurpage() { return l_curpage; }
public long getPrepage() {
if (l_curpage - 1 >= 0) return l_curpage - 1;
else return 0;
}
public long getNextpage() {
if (l_curpage + 1 <= l_totalpage) return l_curpage + 1;
else return l_totalpage;
}
public long getTotalnum() { return l_totalnum; }
public long getTotalpage() { return l_totalpage; }
public long getStart() { return l_start; }
public long getEnd() { return l_end; }
}
PageCt 物件Init(目前頁碼, 總記錄數) 初始化getStart()/getEnd()(資料庫查詢範圍)、getCurpage()、getPrepage()、getNextpage()、getTotalpage() 等類別自動處理邊界條件(如頁碼超出範圍、最後一頁筆數不足),是 JSP 分頁功能的輕量級解決方案。