现在我们结合DBConnetionManager和DBConnectionPool类来讲解Servlet中连接池的使用:
一、首先简单介绍一下Servlet的生命周期:
1、Servlet被创建然后初始化(init()方法)。
2、为0个或多个客户调用提供服务(service()方法)。
3、Servlet被销毁,内存被回收(destroy()方法)。
二、Servlet中使用连接池的实例
使用连接池的Servlet有三个阶段的典型表现是:
1.在init()中,调用DBConnectionManager.getInstance()然后将返回的引用保存在实例变量中。
2.在sevice()中,调用getConnection(),执行一系列数据库操作,然后调用freeConnection()归还连接。
3.在destroy()中,调用release()来释放所有的资源,并关闭所有的连接。
下面的例子演示如何使用连接池。
importjava.io.*;
importjava.sql.*;
importjavax.Servlet.*;
importjavax.Servlet.http.*;
publicclassTestServletextendsHttpServlet{
privateDBConnectionManagerconnMgr;
publicvoidinit(ServletConfigconf)throwsServletException{
super.init(conf);
connMgr=DBConnectionManager.getInstance();
}
publicvoidservice(HttpServletRequestreq,HttpServletResponseres)
throwsIOException{
res.setContentType("text/html");
PrintWriterout=res.getWriter();
Connectioncon=connMgr.getConnection("idb");
if(con==null){
out.println("Cantgetconnection");
return;
}
ResultSetrs=null;
ResultSetMetaDatamd=null;
Statementstmt=null;
try{
stmt=con.createStatement();
rs=stmt.executeQuery("SELECT*FROMEMPLOYEE");
md=rs.getMetaData();
out.println("
Employeedata
");
while(rs.next()){
out.println("
");
for(inti=1;i
out.print(rs.getString(i)+",");
}
}
stmt.close();
rs.close();
}
catch(SQLExceptione){
e.printStackTrace(out);
}
connMgr.freeConnection("idb",con);
}
publicvoiddestroy(){
connMgr.release();
super.destroy();
}<
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>