数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”,预先在池中放入一定数量的连接,需要建立数据库连接时,只需从池中取出一个,使用完毕之后再放回去。
配置tomcat安装目录下conf目录下的context.xml文件:
<Resource name="jdbc/MySQL" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="root" password="wen550643" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" />
<!-- name:数据库连接池的JNDI注册名。 auth:验证方式,Container表示容器负责验证,另一可选项为Application。 type:数据库连接池的类型,默认为javax.sql.DataSource. driverClassName:所使用的JDBC驱动完成Java类名。 username:数据库用户名。 password:数据库用户密码。 url:数据库的URL。 initialSize:连接池初始化时创建的链接数量,默认为0。 maxTotal:从连接池同时可分配的链接数量,默认为8。 minIdle:同时可以在连接池中闲置链接的最低数目,默认为0。 maxIdle:同时可以在连接池中闲置链接的最大数目,默认为8。 maxWaitMillis:当没有链接时,在抛出异常之前,连接池需等待链接归还的最大毫秒数,默认值为-1(无限)。 -->
配置web工程下的web.xml文件:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/MySQL</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
建立DBUtil类,使用getConnection方法来获取数据库连接
public class DBUtil {
public static Connection getConnection() throws NamingException,SQLException{
Connection result=null;
InitialContext ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:/comp/env/jdbc/MySQL");
result =ds.getConnection();
return result;
}
}
建立测试文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*,com.wyl.JavaBean.DBUtil" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JNDI 数据源示例</title>
</head>
<body>
<% Connection con=null; Statement stmt=null; ResultSet rs=null; try{ con=DBUtil.getConnection(); stmt=con.createStatement(); rs=stmt.executeQuery("select * from employee"); while(rs.next()){ out.println(rs.getString(2)+","); out.println(rs.getString(3)); out.println("<br/>"); } }catch(SQLException e){ ; }finally{ if(stmt!=null){ try{ stmt.close(); }catch(SQLException e){ ; } } if(con!=null){ try{ stmt.close(); }catch(SQLException e){ ; } } } %>
</body>
</html>