day_9使用数据库连接池技术连接数据库

之前连接数据库的方法分为两步,1加载驱动,2得到连接。这种方式在多用户操作时显得效率低下

今天我们用数据库连接池的方式使servlet应用连接数据库

所谓数据连接池,我的理解就是:一个池里放好了几根已经和数据库连好的线,用户一进到池子里,发现空闲的连接线,就可以直接插线连接上数据库,而当用户发现池子里的线都被使用时,就在池内等待。这种方式避免了来一个用户加载一次数据库连接驱动,大大地提高了效率

我的环境--tomcat7+sql server 2012

配置如下

找到tomcat-conf下的server.xml文件

将代码

 <Context path="/RevenWebsite" docBase="e:\RevenWebsite"
              reloadable="true" crossContext="true"   workDir="">
            <Resource   name="jdbc/RevenWebsite"
                        auth="Container"    
                        type="javax.sql.DataSource"
                        maxActive="100" 
                        maxIdle="30" 
                        maxWait="10000"
                        username="sa" 
                        password="123456"
                        driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
                        url="jdbc:sqlserver://localhost:1433;DatabaseName=rvdb"/>
 </Context> 
插入Host标签内(具体数据自己修改)。

注意:如果你想在你的server.xml文件中添加中文注释而又不想影响tomcat启动的话,就得引用国标字体

即在文件首行添加

<?xml version="1.0" encoding="gb2312"?>
修改完毕后别了对ConnDB文件的getConn()方法进行修改

//从数据库中得到连接

package com.jxust.reven;

import java.sql.*;
//使用数据源时需要引用的包
import javax.sql.*;
import javax.naming.*;



public class ConnDB
{
	private Connection ct = null;
	public Connection getConn()
	{
		/*传统驱动连接数据库方式
		 try
		{
			//1加载驱动
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			
			//2得到连接
			ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=rvdb","sa","123456");
			
			 
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
		return ct;
		 */
		 //数据源方式
		  try
		{
			//创建一个上下文环境
			 Context con=new javax.naming.InitialContext();
			 
			 //通过con得到数据源
			 DataSource ds=(DataSource)con.lookup("java:comp/env/jdbc/RevenWebsite");
			 ct=ds.getConnection();
			 System.out.println("数据源连接");
			 
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
		return ct;
		 
		
	}
}

最后在自己站点的WEB-INF下的web.xml文件中添加代码

<resource-ref>
       <description>DB Connection</description>
       <res-ref-name>jdbc/RevenWebsite</res-ref-name>
       <res-type>javax.sql.DataSource</res-type>
       <res-auth>Container</res-auth>
   </resource-ref>
暂时不知该步骤的意义,因为不做好像也能完成连接




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值