Servlet中jdbc应用高级篇(结合DBConnetionManager和DBConnectionPool)

来源:互联网 发布:淘宝女士披肩 编辑:程序博客网 时间:2024/05/20 03:39
现在我们结合DBConnetionManager和DBConnectionPool类来讲解servlet中连接池的使用: 

  一、首先简单介绍一下Servlet的生命周期: 

  Servlet API定义的servlet生命周期如下: 

1、 Servlet 被创建然后初始化(init()方法)。 

2、 为0个或多个客户调用提供服务(service()方法)。 

3、 Servlet被销毁,内存被回收(destroy()方法)。 

  二、servlet中使用连接池的实例 

  使用连接池的servlet有三个阶段的典型表现是: 

1. 在init()中,调用DBConnectionManager.getInstance()然后将返回的引用保存在实例变量中。 


2. 在sevice()中,调用getConnection(),执行一系列数据库操作,然后调用freeConnection()归还连接。 

3. 在destroy()中,调用release()来释放所有的资源,并关闭所有的连接。 

  下面的例子演示如何使用连接池。 

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(); 




原创粉丝点击