五、Servlet使用連接池示例
Servlet API所定義的Servlet生命周期類如:
1) 創(chuàng)建并初始化Servlet(init()方法)。
2) 響應(yīng)客戶程序的服務(wù)請求(service()方法)。
3) Servlet終止運行,釋放所有資源(destroy()方法)。
本例演示連接池應(yīng)用,上述關(guān)鍵步驟中的相關(guān)操作為:
1) 在init(),用實例變量connMgr 保存調(diào)用DBConnectionManager.getInstance()所返回的引用。
2) 在service(),調(diào)用getConnection(),執(zhí)行數(shù)據(jù)庫操作,用freeConnection()將連接返回給連接池。
3) 在destroy(),調(diào)用release()關(guān)閉所有連接,釋放所有資源。
示例程序清單如下:
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("不能獲取數(shù)據(jù)庫連接.");
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("
職工數(shù)據(jù)
");
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();
}
}
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |