首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

通用 JSP 分頁元件:支援多組頁碼顯示的完整實現

     編輯:關於JSP

分頁是 Web 應用基礎功能。本文提供一套可複用的 JSP 分頁解決方案,包含資料庫連線類、核心分頁邏輯類、JSP 調用範例與 CSS 樣式,支援自定義每頁筆數、頁碼組大小、多語言文字與圖示化導航,適合中小型專案快速集成。

架構組成

  1. db.MysqlConn:封裝 JDBC 連線、CRUD 操作、XML 配置讀取、表前綴替換。
  2. db.MysqlPages:核心分頁邏輯,計算總頁數、當前頁範圍、生成 HTML 頁碼列表,支援「首頁/上一頁/下一頁/尾頁」與中間頁碼組動態顯示。
  3. JSP 調用頁:設定屬性、執行查詢、輸出分頁條與資料列表。
  4. CSS 樣式:.dh_pages 系列類別美化分頁 UI。
  5. database.xml:資料庫連線參數外部化配置。

核心類關鍵邏輯

MysqlPages.pageInfo()

  • 輸入:SQL 查詢語句、當前頁碼、每頁筆數、頁碼組大小、目標頁面 URL
  • 流程:
    1. 統計總筆數 RowCount,計算總頁數 PageCount
    2. 修正當前頁碼邊界
    3. 計算當前頁起始行 inRow,拼接 LIMIT 子句執行查詢
    4. 動態計算左右側顯示頁碼範圍 PageLs~PageRs
    5. 拼接 HTML 字符串:總筆數統計、首頁、上一頁、左側頁碼、當前頁高亮、右側頁碼、下一頁、尾頁
  • 輸出:含完整分頁導航的 HTML 字符串,同時 getRs() 返回當前頁 ResultSet

JSP 整合範例

<% 
  MysqlPages DBPages = new MysqlPages();
  DBPages.setPageSize(10);
  DBPages.setPageRows(4);  // 偶數最佳,含當前頁實際顯示 5 個
  DBPages.setLang_first_page("<img src='../themes/start.gif' border=0>");
  DBPages.setSql("SELECT * FROM admin");
  DBPages.setPage(request.getParameter("page"));
  String pageInfos = DBPages.pageInfo();
  ResultSet rs = DBPages.getRs();
%>
<%=pageInfos%>
<% while(rs.next()){ %>
  <%=rs.getString("admin_id")%> <%=rs.getString("admin_user")%><br>
<% } %>

優缺點與改進建議

優點:零依賴、邏輯集中、高度可配、支援多組頁碼顯示模式。
缺點:業務邏輯與視圖耦合、直接拼接 SQL 有注入風險、使用 Scriptlet 違反現代 MVC 規範。
建議:遷移至 TagLib 或 JSTL/EL 輸出,採用 PreparedStatement 參數化查詢,或引入成熟分頁庫。但對於維護舊專案或快速原型,本方案仍具參考價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved