今天看到书上MyEclipse配置数据库连接池,搞了好久不成功,上网Google了好久,先是自己手动部署网站,在网上看的都是把web.xml和context.xml放在WEB-INF文件夹下,怎么也不成功,老是遇到Cannot create JDBC driver of class '' for connect URL 'null' and NullPointerException。
webdb为你自己的数据库。
OK,到这就大功告成了,你应该成功了吧,如有问题,欢迎留言咨询!
后来打开EclipseIDE,经过一番测试,发现应该把context.xml放在META-INF下,这应该是版本更新的改动吧。花了好长时间解决这个问题,所以就记录下来了,希望会帮到大家。最后总结一下配置数据库连接池配置的具体步骤:
第一步:把MySQL的mysql-connector-java-5.1.40-bin.jar放在tomcat的lib下,
第二步:在Tomcat\webapps目录下建立你的网站目录test,在test目录下新建文件夹META-INF和WEB-INF,再建立两个文件,分别命名web.xml和context.xml,其中web.xml放在WEB-INF下,context.xml放在META-INF下。内容如下:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<description>MySQL Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/webdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context >
<Resource
name="jdbc/webdb" auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
url="jdbc:mysql://localhost:3306/webdb"
driverClassName="com.mysql.jdbc.Driver"
username="root" password="123456"
/>
</Context>
webdb为你自己的数据库。
第三步:建立测试文件jsptest.jsp,看是否配置成功
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="javax.sql.*" %>
<%@page import="javax.naming.*" %>
<%
try {
Context initContext = new InitialContext();
Context envContext =
(Context)initContext.lookup("java:/comp/env");
DataSource ds =
(DataSource)envContext.lookup("jdbc/webdb");
Connection conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM t_dictionary");
ResultSet rs = pstmt.executeQuery();
StringBuilder table = new StringBuilder();
table.append("<table border='1'>");
//生成查询结果
while (rs.next()){
// 添加<table>标签的HTML代码
table.append("<tr><td>" + rs.getString("english") + "</td><td>");
table.append(rs.getString("chinese") + "</td></tr>");
}
table.append("</table>");
out.println(table.toString());
pstmt.close();
if(!conn.isClosed())
out.println("数据库连接测试成功");
conn.close();
}
catch(SQLException e) {
out.println(e.toString());
}
%>