-
Tomcat4.1.24 (其它版本也可以,原理相通的)
-
确认在%Tomcat _Home%/common/lib下有commons-collections.jar、commons-dbcp.jar、commons-pool.jar包(tomcat默认有这些包),如果没有,请到此地下载: http://tomcat.apache.org/ 。这三个包是必需的。
-
下载相应数据库驱动,放在%Tomcat _Home%/common/lib下。本例以oracle数据库为例,使用的驱动包为: ojdbc14 .jar
-
数据库为Oracle9i
-
确认在%Tomcat _Home%/common/lib下有jndi.jar、dbc2_0-stdext.jar(tomcat默认有这些包)。
注意:oracle9i以上加载此驱动,而其它版本加载:racle.jdbc.OracleDriver
|
<value>oracle.jdbc.driver.OracleDriver</value>
属性
|
描述
|
name
|
指定
Resource
的
JNDI
的名字
|
auth
|
指定管理
Resource
的
Manager
,由两个可
选值
:
Container
和
Application
。
Container
表示由容器来
创
建和管理
Resource
,
Application
表示由
WEB
应
用来
创
建和管理
Resource
。如果在
web application deployment descriptor
中使用
<resource-ref>
,
这
个属性是必需的,如果使用
<resource-env-ref>
,
这
个属性是可
选
的。
|
type
|
指定
Resource
所属的
java
类
名
|
属性
|
描述
|
name
|
指定
ResourceParams
的
JNDI
的名字,必
须
和
Resource
的
name
保持一致
|
factory
|
指定生成
DataSource
对
象的
factory
的
类
名
|
maxActive
|
指定数据
库连
接池中
处
于活
动
状
态
的数据
库连
接最大数目,
0
表示不受限制
|
maxIdle
|
指定数据
库连
接池中
处
于空
闲
状
态
的数据
库连
接的最大数目,
0
表示不受限制
|
maxWait
|
指定数据
库连
接池中的数据
库连
接
处
于空
闲
状
态
的最
长时间
(
单
位
为
毫秒),超
过这
一事件,将会抛出异常。
-1
表示可以无限期等待。
|
username
|
指定
连
接数据
库
的用
户
名
|
password
|
指定
连
接数据
库
的密
码
|
driverClassName
|
指定
连
接数据
库
的
JDBC
驱动
程序
|
url
|
指定
连
接数据
库
的
URL
|
<descryiption>DB Connection</descryiption>
<res-ref-name> jdbc/myoracle </res-ref-name>
<res-type>javax.sql.DataSource </res- type>
<res-auth>Container </res-auth>
</resource-ref>
属性
|
描述
|
description
|
对
所引用的
资
源的
说
明
|
res-ref-name
|
指定所引用
资
源的
JNDI
名字,与
<Resource>
元素中的
name
属性保持一致
|
res-type
|
指定所引用
资
源的
类
名字,与
<Resource>
元素中的
type
属性保持一致
|
res-auth
|
指定所引用
资
源的
Manager
,与
<Resource>
元素中的
auth
属性保持一致
|
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource db = (DataSource)envContext.lookup("jdbc/myoracle ");
Connection conn = db.getConnection( );
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM test ");
while(rs.next()){
out.print(rs.getString("admin_name")+" ");
out.print(rs.getString("admin_password")+"<br>");
}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
此属性必需
|
<name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
注意:oracle9i以上加载此驱动,而其它版本加载:racle.jdbc.OracleDriver
|
<name>driverClassName</name>
由于我们配置的是容器全局数据源,因此所有的应用都可以引用这个数据源。在你的应用中建立引用,在<Context></Context>之间输入以下粗体部分:
<Context path="/Exercise001" reloadable="true" docBase="D:/eclipse/workspace/Exercise001" workDir="D:/eclipse/workspace/Exercise001/work/org/apache/jsp" >
type="javax.sql.DataSource"/>
<descryiption>DB Connection</descryiption>
<res-ref-name> myDB </res-ref-name>
<res-type>javax.sql.DataSource </res- type>
<res-auth>Container </res-auth>
</resource-ref>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<%
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource db = (DataSource)envContext.lookup("myDB ");//名称与web.xml配置中的一致
Connection conn = db.getConnection( );
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM test");
while(rs.next()){
out.print(rs.getString("admin_name")+" ");
out.print(rs.getString("admin_password")+"<br>");
}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>