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

JSP 連接 MySQL 與簡易分頁實作範例

     編輯:Java 相關知識

前言

在早期的 JSP 開發中,直接在頁面中撰寫 Java 程式碼(Scriptlet)是常見做法。本文整理一個經典範例,示範如何使用 JavaBean 連接 MySQL 資料庫,並實作簡單的分頁功能。雖然現代開發推薦使用 MVC 架構與連線池,但理解這些基礎概念有助於維護舊系統或學習核心原理。

資料庫連線 JavaBean

範例中使用 ckstudio.db.MySQLconn 這個自訂的 JavaBean 來管理資料庫連線。在 JSP 頁面開頭透過 <jsp:useBean> 實例化:

<jsp:useBean id="mypage" class="ckstudio.db.MySQLconn" scope="page"/>

這個 Bean 封裝了 JDBC 連線細節,提供 executeQuery(sql) 方法直接傳回 ResultSet。

分頁邏輯實作

1. 參數初始化

int PageSize = 5;      // 每頁筆數
int ShowPage = 1;      // 目前頁碼
int RowCount = 0;      // 總筆數
int PageCount = 0;     // 總頁數
int duoyu = 0;         // 餘數

2. 查詢總筆數與計算總頁數

String sql = "SELECT * FROM member ORDER BY user_id DESC";
ResultSet rs = mypage.executeQuery(sql);

if (rs.next()) {
    rs.last();                    // 移至最後一筆
    RowCount = rs.getRow();       // 取得總筆數
    duoyu = RowCount % PageSize;  // 計算餘數
    
    if (duoyu == 0) {
        PageCount = RowCount / PageSize;
    } else {
        PageCount = (RowCount - duoyu) / PageSize + 1;
    }
}

3. 處理頁碼參數

String ToPage = request.getParameter("ToPage");
if (ToPage == null || ToPage.equals("")) ToPage = "1";
ShowPage = Cint(ToPage);  // 自訂函式轉換整數

// 邊界檢查
if (ShowPage > PageCount) ShowPage = PageCount;
else if (ShowPage <= 0) ShowPage = 1;

4. 定位至當頁第一筆資料

rs.absolute((ShowPage - 1) * PageSize + 1);

5. 輸出當頁資料

int i = 1;
rs.previous();  // 因 absolute 移至第一筆,先 previous 讓 next() 能讀到第一筆
while (rs.next() && i <= PageSize) {
    i++;
    // 輸出欄位值
    out.print(rs.getString(1) + " | ");
    out.print(rs.getString(2) + " | ");
    out.print(rs.getString(3) + " | ");
    out.print(rs.getString(4) + "<br>");
}

分頁導航列

頁面底部顯示「第 X 頁/共 Y 頁,Z 個用戶」,並提供首頁、上一頁、下一頁、末頁連結:

<form action="page.jsp" method="get">
  第 <%=ShowPage%> 頁/共 <%=PageCount%> 頁,<%=RowCount%> 個用戶<br>
  第 <input type="text" name="ToPage" size="2" maxlength="2"> 頁
  <input type="submit" value="GO">
  <a href="page.jsp?ToPage=1">首頁</a>
  <% if (ShowPage > 1) { %>
    <a href="page.jsp?ToPage=<%=ShowPage-1%>">上一頁</a>
  <% } %>
  <% if (ShowPage < PageCount) { %>
    <a href="page.jsp?ToPage=<%=ShowPage+1%>">下一頁</a>
  <% } %>
  <a href="page.jsp?ToPage=<%=PageCount%>">末頁</a>
</form>

輔助函式:字串轉整數

int Cint(String cint) {
    try {
        return Integer.parseInt(cint);
    } catch (NumberFormatException e) {
        return 0;
    }
}

完整程式碼結構

<%@ page contentType="text/html;charset=UTF-8" language="java" 
    import="java.sql.*,java.util.*" %>
<jsp:useBean id="mypage" class="ckstudio.db.MySQLconn" scope="page"/>

<%! 
    // Cint 函式定義在這裡
%>

<%
    // 分頁邏輯與查詢
%>

<html>
<body>
<% 
    // 輸出資料迴圈
%>

<!-- 分頁導航表單 -->

<%
    rs.close();
%>
</body>
</html>

注意事項與改進建議

  • 編碼設定:建議統一使用 UTF-8,避免中文亂碼
  • 資源釋放:務必在 finally 區塊關閉 ResultSet、Statement、Connection
  • SQL 注入:實務上應使用 PreparedStatement 而非字串拼接
  • 效能考量:rs.last() 需支援可捲動游標,大量資料時建議改用 COUNT(*) 查詢總筆數
  • 架構分離:新專案建議採用 Servlet + JSP (MVC) 或 Spring Boot 等框架

總結

此範例展示了 JSP 早期開發的典型模式:在頁面中混合 Java 邏輯與 HTML 輸出。雖然不符合現代最佳實踐,但理解其運作機制對於維護舊專案、學習分頁核心算法仍有參考價值。

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