首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

JSP 連接 MySQL 實戰:JDBC 直連與 JavaBean 封裝兩種模式

     編輯:MySQL 資料庫相關知識

在 JSP 專案中存取 MySQL 資料庫,最基礎的是準備一張測試表(如 username,含 uid、pwd 欄位)並插入少量資料。本文示範兩種常見實作方式:JSP 內嵌 JDBC 程式碼與JavaBean 封裝資料存取邏輯,後者更符合 MVC 分層架構,利於維護與重用。

方式一:JSP 直接使用 JDBC-ODBC 橋接(簡易測試適用)

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
<%
// 連線參數(請依實際環境修改)
String server = "localhost", dbName = "test", user = "root", pass = "your_pwd", port = "3306";
String url = "jdbc:mysql://" + server + ":" + port + "/" + dbName 
           + "?user=" + user + "&password=" + pass + "&useUnicode=true&characterEncoding=GB2312";

Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

String sql = "SELECT * FROM username";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
    out.print("用戶名:" + rs.getString("uid") + " 密碼:" + rs.getString("pwd") + "<br>");
}
rs.close(); stmt.close(); conn.close();
%>

缺點:業務邏輯與展示層耦合、連線資源管理易疏漏、難以單元測試。

方式二:JavaBean 封裝資料庫連線(推薦生產環境)

1. 連線 Bean:conn.DBConnMySQL

package conn;
import java.sql.*;

public class DBConnMySQL {
    private Connection conn;
    private String driver = "org.gjt.mm.mysql.Driver";
    private String urlPrefix = "jdbc:mysql://";

    public Connection getConnToMySQL(String server, String db, String user, String pass, String port) {
        try {
            String url = urlPrefix + server + ":" + port + "/" + db 
                       + "?user=" + user + "&password=" + pass 
                       + "&useUnicode=true&characterEncoding=GB2312";
            Class.forName(driver);
            conn = DriverManager.getConnection(url);
        } catch (Exception e) {
            System.out.println("資料庫連線失敗,請檢查參數:" + e.getMessage());
        }
        return conn;
    }
    public void close() {
        try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); }
    }
}

編譯後的 .class 放置於 WEB-INF/classes/conn/ 目錄。

2. JSP 頁面調用 Bean 執行查詢與插入

<%@ page contentType="text/html; charset=gb2312" import="java.sql.*" %>
<jsp:useBean id="DBConn" scope="page" class="conn.DBConnMySQL" />
<%
String server="localhost", db="test", user="root", pass="your_pwd", port="3306";
Connection conn = DBConn.getConnToMySQL(server, db, user, pass, port);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

// 測試插入
stmt.executeUpdate("INSERT INTO username (uid, pwd) VALUES ('夢想年華','夢想年華')");

ResultSet rs = stmt.executeQuery("SELECT * FROM username");
while (rs.next()) {
    out.print("用戶名:" + rs.getString("uid") + " 密碼:" + rs.getString("pwd") + "<br>");
}
DBConn.close(); // 統一關閉連線
%>

關鍵優化提醒

  • 生產環境請改用 com.mysql.cj.jdbc.Driver (MySQL Connector/J 8.0+) 與 useSSL=false 等參數。
  • 採用連線池 (DBCP/HikariCP) 替代逐請求建立連線,大幅提升並發效能。
  • 參數化查詢 (PreparedStatement) 防止 SQL 注入,切勿直接拼接字串。
  • 資源關閉請置於 finally 區塊或使用 try-with-resources (Java 7+)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved