Servlet中jdbc应用高级篇之六

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

现在我们结合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();

}

}进入讨论组讨论。

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航