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

JSP 分頁顯示實現詳解:從數據查詢到前端渲染完整示例

     編輯:Java 相關知識

前言

分頁是 Web 應用中最常見的數據展示需求。本文提供一個基於 JSP + JDBC 的完整分頁實現示例,涵蓋數據庫查詢、分頁邏輯計算、前端頁碼導航渲染,適合傳統 Java Web 專案快速參考。

一、核心實現邏輯

1.1 分頁參數定義

int pageSize = 10;      // 每頁記錄數
int showPage = 1;       // 當前頁碼
int recCount = 0;       // 總記錄數
int pageCount = 0;      // 總頁數

1.2 關鍵 SQL 與游標操作

使用 ResultSet.TYPE_SCROLL_SENSITIVE 可滾動游標:

Statement stmt = conn.createStatement(
    ResultSet.TYPE_SCROLL_SENSITIVE, 
    ResultSet.CONCUR_READ_ONLY
);
ResultSet rs = stmt.executeQuery("SELECT * FROM hl_news WHERE smallname=? ORDER BY ID DESC");

1.3 總記錄數與總頁數計算

if (rs.next()) {
    rs.last();                    // 移至最後一行
    recCount = rs.getRow();       // 獲取總行數
    pageCount = (recCount % pageSize == 0) ? 
                recCount / pageSize : recCount / pageSize + 1;
}

1.4 定位當前頁首條記錄

String toPage = request.getParameter("page");
if (toPage != null) showPage = Integer.parseInt(toPage);
rs.absolute((showPage - 1) * pageSize + 1); // 跳轉到當前頁第一條

1.5 逐行渲染當前頁數據

for (int i = 1; i <= pageSize; i++) {
    // 讀取欄位並輸出 HTML 表格行
    int NID = rs.getInt("ID");
    String title = rs.getString("Title");
    // ... 其他欄位
    if (!rs.next()) break; // 防止最後一頁不足 pageSize 時越界
}

二、前端頁碼導航生成

<div align="left" class="t2">
共<%=pageCount%>頁 
<% for (int i = 1; i <= pageCount; i++) { %>
    <% if (i == showPage) { %>
        <b><%=i%></b>
    <% } else { %>
        [<a href='Hanye_Manages.jsp?BigClassName=<%=bgname%>&page=<%=i%>&modi=新聞'><%=i%></a>]
    <% } %>
<% } %>
</div>

三、完整代碼結構說明

  1. 頁面指令:編碼設置、引入資料庫連接、權限檢查
  2. 刪除操作:接收 op=del 參數執行刪除並跳轉
  3. 分類導航:查詢 hl_smallclass 生成分類鏈接
  4. 數據列表:表格展示 ID、大類、小類、標題、圖片、時間、操作欄
  5. 分頁條:顯示總頁數、當前頁高亮、頁碼跳轉鏈接
  6. 搜索表單:支援按 ID/標題/時間查詢
  7. 資源關閉:ResultSet、Statement、Connection 依序關閉

四、改進建議(生產環境必讀)

  • SQL 注入防護:使用 PreparedStatement 替代字串拼接
  • 連接池管理:採用 DBCP/HikariCP 替代直連
  • 分頁優化:大數據量改用 LIMIT offset, size (MySQL) 或 ROW_NUMBER() (Oracle/SQLServer) 避免全表掃描
  • 架構分層:採用 MVC 模式,業務邏輯移至 Servlet/Service,JSP 僅負責渲染
  • 編碼統一:全鏈路使用 UTF-8,避免 iso8859_1 轉碼亂碼

五、總結

本示例展示了傳統 JSP 實現分頁的完整流程,雖然技術棧較老舊,但分頁核心邏輯(總數統計、偏移定位、頁碼渲染)具有普遍性。現代項目建議配合 MyBatis PageHelper、Spring Data Pagination 等成熟框架,專注業務創新而非重複造輪子。

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