Servlet中jdbc应用高级篇之六

来源:互联网 发布:手机淘宝首页展示位置 编辑:程序博客网 时间:2024/05/29 23:22
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

  现在我们结合DBConnetionManager和DBConnectionPool类来讲解Servlet中连接池的使用:

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

  ServletAPI定义的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"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击