
本文共 2760 字,大约阅读时间需要 9 分钟。
当对数据库的访问不是很频繁时,可以在每次访问数据库时建立一个连接,用完之后关闭。但是,对于一个复杂的数据库应用,频繁的建立、关闭连接,会极大的减低系统性能,造成瓶颈。所以可以使用数据库连接池来达到连接资源的共享,使得对于数据库的连接可以使高效、安全的复用。
在开发具体项目时没有必要自己编写数据库连接池,现在已经有很多现成的组件。许多服务器已经内置了数据库连接池,如Tomcat服务器、Jboss服务器和WebLogic服务器等。我自己根据书上的例子,配置了一下Tomcat服务器。配置步骤如下:
(1)配置Tomcat根目录下的 \conf 中的文件 context.xml 如下:
<!--Resource 设置数据库连接池的核心--> <!--属性 name 数据源的名字 属性 auth 表示验证方式 type 资源的类型 --> <Resource name="jdbc/DBWater" auth="Container" Type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="*******" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/student"/>
将这段代码添加到<context></context>之间
(2)修改项目工程目录下 WebRoot/WEB-INF/web.xml 文件:
<resource-ref> <!-- 描述信息 --> <description>Connection Pool</description> <!-- 数据源名字 和上面配置中数据源的名字一致--> <res-ref-name>jdbc/DBWater</res-ref-name> <!-- 数据源类型 --> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref>
下面就可以进行连接池使用了。比如,这里,创建一个DBWater.java文件:
DBWater.java package com.lihui.dbwater; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class DBWater { String userId; String name; String password; public String getUserId(){ return userId; } public String getName(){ return name; } public String getpassword(){ return password; } public void init(){ try { InitialContext initC = new InitialContext();//创建InitialContext对象 if (initC == null) { throw new Exception("No Context"); } Context context = (Context)initC.lookup("java:comp/env");//不变 DataSource ds = (DataSource)context.lookup("jdbc/DBWater");//tomcat服务器配置文件中数据源名称 if (ds != null) { Connection conn = ds.getConnection(); if (conn != null) { Statement statement = conn.createStatement(); ResultSet resultSet = statement.executeQuery("select * from user"); while (resultSet.next()) { userId = resultSet.getString(1); name = resultSet.getString(2); password = resultSet.getString(3); } conn.close(); } } } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
那么在jsp文件中调用该类:
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@page import="com.lihui.dbwater.DBWater"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>连接池测试</title> </head> <body> <% DBWater rs = new DBWater(); rs.init(); %> id:<%=rs.getUserId() %> name:<%=rs.getName() %> psd:<%=rs.getpassword() %> </body> </html>
参考文献:
1http://f543711700.iteye.com/blog/1173618
2http://www.cnblogs.com/lihuiyy/archive/2012/02/14/2351768.html
转载地址:https://blog.csdn.net/leijie0322/article/details/46669593 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关于作者
