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

Servlet + JavaBean 訪問 MySQL 完整實戰教程 (JDK 5 + Tomcat 5.5)

     編輯:Java 程式設計入門

開發環境佈署

組件版本/路徑
JDK1.5.0_01 D:\Java\jdk1.5.0_01
Tomcat5.5.4 D:\Tomcat 5.5
MySQL 驅動Connector/J 3.1.6 mysql-connector-java-3.1.6-bin.jar

環境變數設定

JAVA_HOME=D:\Java\jdk1.5.0_01
PATH=%JAVA_HOME%\bin
CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
D:\Tomcat 5.5\common\lib\servlet-api.jar;
D:\Tomcat 5.5\common\lib\mysql-connector-java-3.1.6-bin.jar

Tomcat 虛擬目錄配置

在 D:\Tomcat 5.5\conf\Catalina\localhost\test.xml:

<Context path="/test" docBase="d:/www" reloadable="true" crossContext="true" debug="0" />

對應實體目錄結構:

d:\www\
├─ WEB-INF\
│  ├─ web.xml
│  ├─ classes\NinGoo\database\dbconn.class
│  └─ lib\ (可放共用 jar)

核心代碼實現

1. 資料庫 JavaBean (dbconn.java)

package NinGoo.database;

import java.sql.*;

public class dbconn {
    private Connection conn = null;
    private ResultSet rs = null;

    // 連線參數
    private final String server = "127.0.0.1";
    private final String port = "3306";
    private final String db = "test";
    private final String user = "root";
    private final String pass = "password";
    private final String driver = "com.mysql.jdbc.Driver";
    private final String url = "jdbc:mysql://" + server + ":" + port + "/" + db
            + "?user=" + user + "&password=" + pass + "&useUnicode=true&characterEncoding=UTF-8";

    public Connection getConn() {
        try {
            Class.forName(driver).newInstance();
            conn = DriverManager.getConnection(url);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

    public ResultSet executeSQL(String sql) {
        try {
            Statement stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rs;
    }

    public void close() {
        try { if (rs != null) rs.close(); } catch (Exception ignore) {}
        try { if (conn != null) conn.close(); } catch (Exception ignore) {}
    }
}

2. Servlet 控制器 (welcome.java)

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class welcome extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        dbconn myconn = new dbconn();
        Connection conn = null;
        ResultSet rs = null;

        try {
            conn = myconn.getConn();
            rs = myconn.executeSQL("SELECT * FROM test"); // test 為示例表
            out.println("MySQL 測試");
            while (rs.next()) {
                out.println(rs.getString(1) + "
"); } out.println("successful!"); } catch (Exception e) { e.printStackTrace(out); } finally { myconn.close(); // 確保資源釋放 } } }

3. Web.xml 註冊

<web-app>
  <servlet>
    <servlet-name>welcome</servlet-name>
    <servlet-class>welcome</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>welcome</servlet-name>
    <url-pattern>/welcome</url-pattern>
  </servlet-mapping>
</web-app>

編譯與部署步驟

  1. javac -d d:\www\WEB-INF\classes NinGoo/database/dbconn.java
  2. javac -cp d:\www\WEB-INF\classes;D:\Tomcat 5.5\common\lib\servlet-api.jar welcome.java → 複製 welcome.class 至 d:\www\WEB-INF\classes\
  3. 重啟 Tomcat。
  4. 瀏覽器訪問 https://localhost:8080/test/welcome。

關鍵最佳實踐與避坑指南

項目建議
連線管理生產環境必須使用連線池 (DBCP/HikariCP/JNDI),避免頻繁建立/關閉連線
SQL 注入改用 PreparedStatement + 參數綁定,杜絕字串拼接
資源關閉JDK 7+ 採用 try-with-resources,舊版在 finally 逐一關閉
編碼URL 附加 useUnicode=true&characterEncoding=UTF-8,頁面 charset=UTF-8
異常處理不要吞掉例外,至少記錄日誌並回傳友好錯誤頁

現代化重構路徑

  • 引入 Spring JDBC / MyBatis / JPA,消除樣板代碼。
  • Servlet 遷移至 Spring MVC / Spring Boot @RestController。
  • 配置類替代 web.xml,啟用嵌入式 Tomcat/Jetty,實現無容器部署。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved