Tomcat使用JNDI连接数据库,这里就使用Mysql为例:
1.添加数据库驱动文件
通过数据源访问数据库,由于数据源由tomcat创建并维护,所以必须把MySql的驱动包拷贝到Tomcat根目录\lib中
2.配置数据源.
Eclipse中如果以tomact为容器,其eclipseIDE工程结构中会自动生成Servers这个文件夹把文件夹下的
context.xml里的<Context>节点中添加以下配置
name:给数据源设置名字(jndi)
auth:表示数据源由谁管理
type:类型
maxActive:在
连接池中最大的激活连接数
maxIdle:在连接池中最大的保留(空闲)连接数
maxWait:客户端在
队列池中最大等待时间(秒)
<Context reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource
name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/page"/>
</Context>
在Tomact6中只需要配置context.xml这个配置文件,server.xml,web.xml都是不用来配置的,而在tomcat6之前的
版本是要配置的,这里就不在阐述了.
这里来通过一个index.jsp来测试一下,记住配置了数据源是不能通过main方法来测试的
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page language="java"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<html>
<baby>
<%
Context ctx = null;
DataSource ds = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Context initCtx = new InitialContext();
ds = (javax.sql.DataSource) initCtx.lookup("java:comp/env/jdbc/mysql");
conn = ds.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
String strSql = "select * from student";
rs = stmt.executeQuery(strSql);
while (rs.next()) {
out.println(rs.getString(1));
}
} catch (Exception ex) {
ex.printStackTrace();
out.println(ex.toString());
} finally {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
if (ctx != null)
ctx.close();
}
%>
</baby>
</html>