</pre>一、创建数据库表并插入数据<p></p><p><span style="white-space:pre"></span>1.创建数据库</p><p></p><pre code_snippet_id="1708236" snippet_file_name="blog_20160605_1_3365042" name="code" class="html">create database studentinfo;
2.创建数据库表
create table student(
id varchar(8) not null primary key,
name varchar(20) not null,
sex varchar(10) not null,
major varchar(30) not null,
hometown varchar(30) not null );
3.插入数据
insert into student(id, name, sex, major, hometown)
values(‘1’, ‘zhangsan’, ‘male’, ‘Software Engineering’, ‘China’);
二、配置Tomcat文件
全局配置(使用全局配置时,需要在tomcat的lib目录下添加mysql的驱动jar包。否则就会有异常)
1.配置conf目录下的server.xml
在<GlobalNamingResources>标签下添加如下代码
<span style="white-space:pre"> </span><Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/studentinfo"
username="root"
password=""
maxActive="100"
maxIdle="30"
maxWait="10000" />
name:指定连接池的名称(一般起名为"jdbc/***")
auth:管理者,一般选择默认
type:指定连接池的类,它负责连接池的事务处理
driverClassName:指定连接数据库使用的驱动
url:指定要连接的数据库
username:数据库用户名
password:数据库密码
maxActive:指定连接池的最大连接数(达到最大连接数后,再建立连接,会报异常)
maxIdle:指定连接池连接的最大空闲数(当关闭数据库时(此时并没有断开连接,而是将他们放回连接池),连接池中最多可以有的空闲连接数)
maxWait:建立连接的最大等待时间(如果超过此时间,将受到异常)
当连接池中没有空闲连接,而且连接数没有达到maxActive并发的最大连接时,则从连接池中建立新的连接。
2.配置conf目录下的context.xml文件
在<context>标签下添加如下代码
<ResourceLink name="jdbc/TestDB"
type="javax.sql.DataSource"
global="jdbc/TestDB"/>
局部配置
1.在你的javaweb工程的WebRoot目录下的WEB-INF目录下创建context.xml并填写如下代码
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/TestDB" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/studentinfo"
username="root"
password=""
maxActive="100"
maxIdle="30"
maxWait="10000"
/>
</Context>
无论全局还是局部配置都需要修改web.xml文件(而且两者修改的内容一致),所以就不再重复。
在你的web.xml添加代码,效果如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
</w
注:局部配置有可能出现异常Cannot create JDBC driver of class '' for connect URL 'null',如果出现这种异常,请使用全局配置,如果有其他更好的解决办法,请私信告诉我,谢谢。
三、书写jsp代码进行测试
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*, javax.sql.*, javax.naming.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>mysql连接池测试</title>
</head>
<body>
<%
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
String sql = "select * from student";
try {
//创建上下文环境
Context initContext = new InitialContext();
//查找数据源
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/TestDB");
//从连接池中获取连接
conn = ds.getConnection();
pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
if(rs.next()) {
out.println(rs.getString(1));
out.println(rs.getString(2));
out.println(rs.getString(3));
out.println(rs.getString(4));
out.println(rs.getString(5));
} else {
out.println("no rs.next()");
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
try {rs.close();} catch(Exception e){}
try {pstm.close();} catch(Exception e){}
try {conn.close();} catch(Exception e){}
}
%>
</body>
</html>
注:由连接池获取到的连接使用上述方式获取的连接,只能在jsp页面或者servlet页面中使用,在java代码的main方法中测试连接时会报以下异常
javax.naming.NoInitialContextException
以上。