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

JSP JDBC-ODBC 分頁範例:手把手實作留言板分頁顯示

     編輯:Java 相關知識

前置準備

  • ODBC 系統 DSN:`Test_DB` (SQL Server 7)
  • 資料表:`guestbook (name, email, body)`
  • 帳號:`sa` / 密碼空白

核心 JSP 代碼(含分頁邏輯)


<%
// 參數接收
String strPage = request.getParameter("page");
int intPage = (strPage == null) ? 1 : Integer.parseInt(strPage);
int intPageSize = 5;

// 連線與查詢總筆數
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:Test_DB", "sa", "");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT COUNT(*) FROM guestbook");
rs.next();
int intRowCount = rs.getInt(1);
int intPageCount = (int) Math.ceil((double) intRowCount / intPageSize);
if (intPage > intPageCount) intPage = intPageCount;

// 取得當頁資料(使用捲動游標定位)
rs = stmt.executeQuery("SELECT name, email, body FROM guestbook");
int start = (intPage - 1) * intPageSize;
for (int i = 0; i < start && rs.next(); i++); // 定位到起始行

// 顯示資料
int displayed = 0;
while (displayed < intPageSize && rs.next()) {
%>
    姓名:<%= rs.getString("name") %><br>
    郵件:<%= rs.getString("email") %><br>
    內容:<%= rs.getString("body") %><hr>
<%
    displayed++;
}
%>
第 <%= intPage %> 頁 / 共 <%= intPageCount %> 頁<br>
<%
if (intPage < intPageCount) {
%> <a href="test.jsp?page=<%= intPage+1 %>">下一頁</a> <%
}
if (intPage > 1) {
%> <a href="test.jsp?page=<%= intPage-1 %>">上一頁</a> <%
}
<%
rs.close(); stmt.close(); conn.close();
%>

關鍵技術點

  1. JDBC-ODBC 橋接器:`sun.jdbc.odbc.JdbcOdbcDriver`(JDK 8 後移除,現代專案請用原生 JDBC 驅動)。
  2. 捲動游標定位:`TYPE_SCROLL_SENSITIVE` 允許 `rs.next()` 逐行跳過至目標頁起始行。
  3. 分頁參數傳遞:QueryString `page` 參數控制頁碼。
  4. 資源釋放:頁面結尾顯式關閉 `ResultSet`、`Statement`、`Connection`。

部署與測試

  • 儲存為 `test.jsp` 置於應用伺服器部署目錄(Tomcat `webapps/ROOT`、Resin `doc` 等)。
  • 瀏覽 `https://localhost:8080/test.jsp` 驗證分頁功能。

現代化改良建議

  • 改用資料庫原生分頁(SQL Server `OFFSET/FETCH`、MySQL `LIMIT`、Oracle `ROWNUM`)。
  • 採用連線池(HikariCP/Druid)替代 `DriverManager`。
  • 引入 JSTL/EL 移除 Scriptlet,分離呈現邏輯。
  • 加入參數驗證(頁碼邊界、SQL 注入防護)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved