主要步骤:
1.要在tomcat下的conf包中的server.xml中加入数据库连接池配置信息:
在<Host>标签下加入
<Context path="/myweb" docBase="D:/apache-tomcat-6.0.18/webapps/myweb" >
<Resource auth="Container" name="jdbc/jlndb" type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:JLNDB"
username="db"
password="db"
maxActive="10000"
maxIdle="10000"
maxWait="10000"
removeAbandoned="true"
removeAbandonedTimeOut="10"
logAbandoned="true"/>
</Context>
注释:
path指定访问Web应用的URL入口,注意/myweb,而不是myweb,必须有/。
docBase:表示的项目的具体路径。
< Resource >元素为JNDI,在lookup是要查找的资源,name: 表示JNDI在lookup是输入的资源名。
auth:是连接池管理权属性,Container表示容器管理。
name:表示你的连接池的名称也就是你要访问连接池的地址。
type:是对象的类型。
driverClassName:是数据库驱动的名称。
url:是数据库的地址。
username:是登陆数据库的用户名。
password:是登陆数据库的密码。
MaxActive:连接池的最大数据库连接数。设为0表示无限制。
maxIdle:最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制。
maxWait :最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
removeAbandoned:是否自我中断,默认是 false 。
removeAbandonedTimeout:几秒后数据连接会自动断开,在removeAbandoned为true,提供该值。
logAbandoned:是否记录中断事件, 默认为 false。
注意:
其中factory="org.apache.commons.dbcp.BasicDataSourceFactory" 也可以配置
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
*maxActive:最大连接数据库连接数,设 0 为没有限制
*maxIdle:最大等待连接中的数量,设 0 为没有限制
*maxWait:最大等待毫秒数, 单位为 ms, 超过时间会出错误信息
2.在web.xml中加入配置信息:
数据库资源映射信息
<resource-ref id="db">
<description>DB Connection</description>
<res-ref-name>jdbc/jlndb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
其中id可以不写。
注意:这里我没有配置web.xml也成功了。
3.添加架包,确认tomcat的common/lib或者lib目录下存在如下架包:DBCP的依赖包:
commons-pool.jar
commons-dbcp.jar
数据库的驱动包:我们这里用的是oracle 10g。
ojdbc14.jar
ojdbc14_g.jar
另外再确保存在
naming-resources.jar
naming-factory.jar
naming-common.jar
commons-collections.jar
jndi.jar
4.编写测试jsp名test.jsp
在myweb目录下建立test.jsp内容如下:
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page contentType="text/html;charset=GB2312"%>
<html>
<head>
<title>my jdbc action</title>
</head>
<body>
<h2>连接池测试</h2>
<%
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
DataSource ds = null;
String str=null;
%>
<%
try {
//找到驱动程序并注册
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
//取得数据源
ds = (DataSource) envContext.lookup("jdbc/jlndb");
//以下为另一种取得数据源的方式
//ds = (DataSource) initContext.lookup("java:comp/env/jdbc/jlndb");
//取得数据库连接
con = ds.getConnection();
if (envContext == null) {
System.out.println("envContext is null");
} else {
System.out.println("envContext is not null");
}
if (ds == null) {
System.out.println("ds is null");
} else {
System.out.println("ds is not null");
}
if (con == null) {
System.out.println("con is null");
} else {
System.out.println("con is not null");
}
//创建Statement
stmt = con.createStatement();
//创建sql
String query = "SELECT * FROM DB.TBHLUSER";
//执行查询sql
rs = stmt.executeQuery(query);
while (rs.next()) {
str = rs.getString(2);
System.out.println(str);
}
} catch (SQLException e) {
e.printStackTrace();
}
finally {
if (con != null) {
con.close();
}
}
%>
打印从数据库中取得的数据:
<%=rs.toString()%>
<br>
<%=str%>
</body>
</html>
5.在oracle数据中实例jlndb中建表并添加数据:
建立表tbhluser:
CREATE TABLE tbhluser (
id VARCHAR (4) DEFAULT '' NOT NULL,
name VARCHAR (30) DEFAULT '' ,
password VARCHAR (16) DEFAULT '' ,
groupId VARCHAR (50) DEFAULT '' ,
grade VARCHAR (2) DEFAULT '',
PRIMARY KEY(id)
);
添加数据:
insert into db.tbhluser VALUES ('1', 'yuli', 'yuli', 'yuli', 'yl')
6.启动tomcat,在浏览器中输入http://localhost:8080/myweb/test.jsp
如果看到如下信息
连接池测试
打印从数据库中取得的数据: org.apache.commons.dbcp.DelegatingResultSet@908881
yuli
则表示配置成功。