`
famoushz
  • 浏览: 2928552 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jsp中实现连接池(ZT)

阅读更多





在JSP里有两种实现的办法,一种是用JNDI(Java Naming Directory Interface),这可能和应用服务器有关,如果是Resin,先在resin.conf里定义


java 代码
 
  1. <resource-ref>   
  2. <res-ref-name>jdbc/oracle</res-ref-name>   
  3. <res-type>javax.sql.DataSource</res-type>   
  4. <init-param driver-name="oracle.jdbc.driver.OracleDriver"/>   
  5. <init-param url="jdbc:oracle:thin:@192.168.1.1:1521:oracle"/>   
  6. <init-param user="system"/>   
  7. <init-param password="manager"/>   
  8. <init-param max-connections="20"/>   
  9. <init-param max-idle-time="30"/>   
  10. </resource-ref>   
  11. 如果为Tomcat,在Server.xml里面定义,有关的资料可以查文档,然后在jsp里这样用   
  12. try{   
  13. javax.naming.Context env = (Context)new InitialContext().lookup("java:comp/env");   
  14. javax.sql.DataSource pool=(javax.sql.DataSource) env.lookup("jdbc/oracle");   
  15. }catch(Exception e){System.err.println("Exception error:"+e.getMessage());}   
  16.   
  17. try {   
  18. Connection conn = pool.getConnection();   
  19. }catch(Exception e){System.out.println("Exception error:"+e.getMessage());}   
  20. 通过这段代码,你就获得从连接池里获得了一个连接conn。如果想用普通的连接池,那只能用JavaBean了,先写一个ConnectionPool的java的类,然后直接从连接池中获得连接,下面是我一个连接池的JavaBean   
  21. ConnectionPool.java如下:   
  22.   
  23. import java.io.PrintStream;   
  24. import java.sql.Connection;   
  25. import java.util.Vector;   
  26.   
  27. // Referenced classes of package com.ilovejsp.sql:   
  28. // DataSource, PooledConnection   
  29.   
  30. public class ConnectionPool   
  31. {   
  32. private Vector pool;   
  33. private int size;   
  34. DataSource db;   
  35.   
  36. public ConnectionPool()   
  37. {   
  38. pool = null;   
  39. size = 0;   
  40. db = new DataSource();   
  41. }   
  42.   
  43. public void setSize(int value)   
  44. {   
  45. if(value > 1)   
  46. size = value;   
  47. }   
  48.   
  49. public int getSize()   
  50. {   
  51. return size;   
  52. }   
  53.   
  54. public synchronized void initPool()   
  55. throws Exception   
  56. {   
  57. try   
  58. {   
  59. for(int x = 0; x < size; x++)   
  60. {   
  61. Connection conn = db.getConnection();   
  62. if(conn != null)   
  63. {   
  64. PooledConnection pcon = new PooledConnection(conn);   
  65. addConnection(pcon);   
  66. }   
  67. }   
  68.   
  69. }   
  70. catch(Exception e)   
  71. {   
  72. System.err.println(e.getMessage());   
  73. }   
  74. }   
  75.   
  76. private void addConnection(PooledConnection pcon)   
  77. {   
  78. if(pool == null)   
  79. pool = new Vector(size);   
  80. pool.addElement(pcon);   
  81. }   
  82.   
  83. public synchronized void releaseConnection(Connection conn)   
  84. {   
  85. int x = 0;   
  86. do   
  87. {   
  88. if(x >= pool.size())   
  89. break;   
  90. PooledConnection pcon = (PooledConnection)pool.elementAt(x);   
  91. if(pcon.getConnection() == conn)   
  92. {   
  93. System.err.println("Release Connection".concat(String.valueOf(String.valueOf(x))));   
  94. pcon.setInUse(false);   
  95. break;   
  96. }   
  97. x++;   
  98. }   
  99. while(true);   
  100. }   
  101.   
  102. public synchronized Connection getConnection()   
  103. throws Exception   
  104. {   
  105. PooledConnection pcon = null;   
  106. for(int x = 0; x < pool.size(); x++)   
  107. {   
  108. pcon = (PooledConnection)pool.elementAt(x);   
  109. if(!pcon.inUse())   
  110. {   
  111. pcon.setInUse(true);   
  112. return pcon.getConnection();   
  113. }   
  114. }   
  115.   
  116. try   
  117. {   
  118. Connection conn = db.getConnection();   
  119. pcon = new PooledConnection(conn);   
  120. pcon.setInUse(true);   
  121. pool.addElement(pcon);   
  122. }   
  123. catch(Exception e)   
  124. {   
  125. System.err.println("Exception error:".concat(String.valueOf(String.valueOf(e.getMessage()))));   
  126. }   
  127. return pcon.getConnection();   
  128. }   
  129.   
  130. public synchronized void emptyPool()   
  131. {   
  132. for(int x = 0; x < pool.size(); x++)   
  133. {   
  134. System.err.println("Closing Jdbc Connection".concat(String.valueOf(String.valueOf(x))));   
  135. PooledConnection pcon = (PooledConnection)pool.elementAt(x);   
  136. if(!pcon.inUse())   
  137. {   
  138. pcon.close();   
  139. continue;   
  140. }   
  141. try   
  142. {   
  143. Thread.sleep(3000L);   
  144. pcon.close();   
  145. }   
  146. catch(Exception e)   
  147. {   
  148. System.out.println("Exception :".concat(String.valueOf(String.valueOf(e.getMessage()))));   
  149. }   
  150. }   
  151.   
  152. db.close();   
  153. }   
  154. }   
  155. testpool.jsp内容如下:   
  156. <%@ page language="java" contentType="text/html;charset=gb2312"%>   
  157. <%@ page import="java.sql.*"%>   
  158.   
  159. <HTML>   
  160. <HEAD>   
  161. <TITLE>系统数据信息</TITLE>   
  162. </HEAD>   
  163. <BODY>   
  164. <%ConnectionPool db=new ConnectionPool();   
  165. Connection conn=db.getConnection();   
  166. Statement stmt=conn.createStatement();   
  167. String sql1="select * from pg_database ";   
  168.   
  169. ResultSet rs=stmt.executeQuery(sql1);   
  170. %>   
  171. <TABLE><TR><TD>系统数据库信息</TD></TR>   
  172. <TR><TD>   
  173. <%while(rs.next()) {   
  174. %>   
  175. <%=rs.getString(1)%>   
  176. <%}   
  177. rs.close();%>   
  178. </TR></TD>   
  179. <TABLE><TR><TD>系统字段信息</TD></TR>   
  180. <TR><TD>   
  181. <%String sql2="select * from pg_type";   
  182. rs=stmt.executeQuery(sql2);   
  183. while(rs.next()) {   
  184. %>   
  185. (<%=rs.getString(1)%>)   
  186. <%}   
  187. rs.close();   
  188. db.close();%>   
  189. </TR></TD>   
  190. </BODY>   
  191. </HTML>  








分享到:
评论

相关推荐

    连接池 (jsp)

    在JSP和MVC应用中,我们通常使用像Apache DBCP、C3P0或HikariCP这样的连接池实现。这些库提供了初始化连接池、设置最大最小连接数、超时策略等功能。配置连接池通常涉及以下步骤: 1. 添加对应连接池的依赖到项目中...

    jsp连接数据库连接池代码示例

    本示例将深入讲解如何在JSP中利用连接池进行数据库连接,以"ConnectionPool.java"作为连接池类,并通过"verifylogin.jsp"和"Login1.jsp"展示实际应用。 首先,我们需要了解什么是数据库连接池。数据库连接池是一种...

    JSP数据库连接池连接实例

    在IT行业中,数据库连接池是优化应用程序性能的关键技术之一,特别是在使用Java服务器页面(JSP)进行Web开发时。...这个例子中的"数据库连接池连接语句"可能包含了具体的配置示例,你可以参考其内容进行实践。

    jsp分页+连接池技术

    jsp分页+连接池技术是一种在Web应用程序中实现数据库连接池和分页功能的技术。该技术通过使用连接池来管理数据库连接,提高了数据库访问的效率和安全性。同时,jsp分页技术可以实现数据的分页显示,提高了用户体验。...

    JSP数据库连接池技术与应用

    在Java Web开发中,JSP(JavaServer Pages)...开发者应熟练掌握数据库连接池的原理和使用,以便在实际项目中实现更高效的数据库访问。同时,选择合适的连接池实现,如根据项目需求评估性能和稳定性,也是至关重要的。

    jsp连接MySQL用连接池方式步骤

    本文将详细介绍如何在JSP应用中配置并使用连接池来连接MySQL数据库。 #### 二、连接池的基本概念 连接池是一种用于管理数据库连接的技术,它可以复用现有的连接,避免频繁创建和销毁连接所带来的资源开销。使用...

    jsp毕业设计——JSP数据库连接池的研究与实现(源代码+论文).zip

    3. **获取和释放连接**:在JSP或Servlet中,可以通过编程方式从连接池中获取连接,执行完SQL操作后,必须正确关闭并归还连接,以免耗尽池中的资源。 4. **连接池监控**:为了确保系统的稳定运行,连接池通常提供...

    jsp中文帮助 超实用的数据库连接池问题

    本资源“jsp中文帮助”提供了关于JSP的中文指导,特别关注了数据库连接池的问题,这对于理解和解决实际开发中的问题非常有帮助。 数据库连接池是管理数据库连接的一种机制,它能够有效地提高系统性能和资源利用率。...

    JSP 数据库连接池技术

    在JSP中,我们通常使用诸如Apache DBCP、C3P0、HikariCP或Tomcat JDBC Connection Pool等流行的数据库连接池实现。这些库提供了一套完整的管理和维护数据库连接的机制,包括初始化池大小、最大连接数、超时设置、...

    jsp连接池详解及配置

    常见的JSP连接池实现有DBCP、C3P0、HikariCP等。以下以HikariCP为例,介绍配置步骤: 1. **引入依赖**:在项目中添加HikariCP的依赖库,例如在Maven的pom.xml文件中添加对应的依赖项。 2. **配置连接池**:在配置...

    jsp连接池配置器(自动配置连接池)

    【jsp连接池配置器(自动配置连接池)】是一个实用工具,旨在简化开发人员在Java Web应用程序中配置数据库连接池的过程。通常,手动配置连接池需要编写大量的XML配置文件,如`context.xml`或`web.xml`,以及相关的Java...

    JSP中tomcat的SQL Server2000数据库连接池的配置

    通过以上步骤,你便能在JSP应用中成功配置并使用Tomcat的SQL Server2000数据库连接池,实现更高效、稳定的数据库访问能力。然而,值得注意的是,SQL Server2000作为一个较旧的数据库版本,其安全性和性能可能无法...

    JSP源码JSP数据库连接池的研究与实现(源代码+论文)

    ### JSP源码JSP数据库连接池的研究与实现(源代码+论文) #### 知识点一:JSP技术概述 ...通过上述知识点的学习与实践,可以全面掌握如何在JSP项目中实现高效的数据库连接池,从而提升Web应用程序的性能和稳定性。

    JSP 数据库连接池的配置

    在JSP(JavaServer Pages)开发中,数据库连接池的配置是一项非常重要的技术,它能够显著提高应用程序的性能和响应速度。本文将详细介绍如何在JSP项目中配置MySQL数据库连接池。 #### 一、准备环境与所需文件 1. *...

    JSP数据库连接池的研究与实现(源代码+论文).rar

    在JSP中实现数据库连接池,通常涉及以下步骤: 1. 引入依赖:首先,你需要在项目中引入对应的数据库连接池库,这可能通过Maven或Gradle等构建工具完成。例如,如果你选择HikariCP,你需要在pom.xml或build.gradle中...

    Jsp使用Proxool连接池

    **JSP与Proxool连接池的深度解析** 在Java Web开发中,数据库连接管理是一项重要的...在提供的压缩包文件中,`Tomcat连接池文件`可能包含了更具体的配置示例和使用指南,有助于深入理解和实践`JSP`与`Proxool`的整合。

    连接池 连接池连接池 连接池

    在JSP中使用连接池,通常是在Servlet或者Filter中初始化连接池,然后在需要访问数据库的JSP页面或Servlet中获取和释放连接。这种方式使得数据库连接的管理更加规范,降低了资源消耗。 连接池的使用还有以下几个重要...

    JSP数据库连接池的研究与实现(源代码+论文).zip

    在JSP中实现数据库连接池,通常会用到诸如Apache的DBCP或C3P0这样的第三方库。这些连接池组件提供了预配置的数据库连接,当Web应用需要时可以从池中获取,不需要时归还回池,而不是直接关闭。这样可以避免每次请求都...

    JSP数据库连接池的研究与实现(源代码+文档)

    在JSP中实现数据库连接池,通常需要以下步骤: 1. **选择连接池组件**:有很多成熟的开源数据库连接池实现,如Apache的DBCP、C3P0,以及HikariCP等。这些组件提供了API来管理和维护数据库连接。 2. **配置连接池**...

Global site tag (gtag.js) - Google Analytics