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

Servlet JDBC 連線池進階實作(五):Servlet 整合完整範例

     編輯:關於JSP

本文結合 DBConnectionManager 與 DBConnectionPool 類別,示範 Servlet 中使用連線池的完整生命週期與程式碼。

Servlet 生命週期三階段

  1. init():建立並初始化
  2. service():服務 0~N 個客戶請求
  3. destroy():銷毀、釋放記憶體

連線池使用三步驟

  1. init() 中呼叫 DBConnectionManager.getInstance() 取得管理器引用,存為實例變數
  2. service() 中呼叫 getConnection() 取得連線,執行資料庫操作,最後 freeConnection() 歸還連線
  3. destroy() 中呼叫 release() 釋放所有資源、關閉所有連線

完整 Servlet 範例

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

public class TestServlet extends HttpServlet {
    private DBConnectionManager connMgr;

    public void init(ServletConfig conf) throws ServletException {
        super.init(conf);
        connMgr = DBConnectionManager.getInstance();
    }

    public void service(HttpServletRequest req, HttpServletResponse res)
            throws IOException {
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        Connection con = connMgr.getConnection("idb");
        if (con == null) {
            out.println("Cant get connection");
            return;
        }
        ResultSet rs = null;
        ResultSetMetaData md = null;
        Statement stmt = null;
        try {
            stmt = con.createStatement();
            rs = stmt.executeQuery("SELECT * FROM EMPLOYEE");
            md = rs.getMetaData();
            out.println(" Employee data");
            while (rs.next()) {
                out.println("
"); for (int i = 1; i < md.getColumnCount(); i++) { out.print(rs.getString(i) + ", "); } } stmt.close(); rs.close(); } catch (SQLException e) { e.printStackTrace(out); } connMgr.freeConnection("idb", con); } public void destroy() { connMgr.release(); super.destroy(); } }

此範例展示標準的連線池使用模式:初始化一次、請求時借用歸還、銷毀時釋放資源,確保連線高效復用並防止洩漏。

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