Servlet中jdbc应用高级篇(五)
现在我们结合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(); } }
|
- 上一篇:Servlet中jdbc应用高级篇(四)
- 下一篇:JSP技术简介之一