今天晚上花了两小时,总算能正确对Tomcat配置数据源了,如今写出来和你们分享一下。(红色字体为大概步骤)
第一步:
下载安装好Tomcat的admin插件,在次就不介绍了,读者能够到网上找找相关资料。
第二步:
JNDI Name: jdbc/mysql
Data Source URL: jdbc:mysql://localhost:3306/mysql (注意此处不要填错,这个问题花了我很多时间,3306后面是“/”,而不是“?”,mysql是数据库名字)
JDBC Driver Class:
User Name: root
Password: ******
Max. Active Connections: 4
Max. Idle Connections: 2
Max. Wait for Connection: 5000
Validation Query:
输完后,成后点击\"save\"。记得要再点击上面的\"Commit Changes\"。这时查看server.xml文件能够看到多了两个<Resource/>元素,内容以下:
<Resource
name="jdbc/mysql"
type="javax.sql.DataSource"
maxActive="4"
maxIdle="2"
username="root"
maxWait="5000"
driverClassName="com.mysql.jdbc.Driver"
password="yqs2602555"
url="jdbc:mysql://localhost/mysql"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
第三步:
将mysql驱动包放入Tomcat_Home/common/lib下(此处也要注意)和应用程序的lib目录下。
第四步:
配置context.xml文件,在<webapp></webapp>中加入以下内容:
<Resource
auth="Container"
description="User database that can be updated and saved"
name="jdbc/mysql"
type="javax.sql.DataSource"
username="root"
maxActive="4"
maxIdle="2"
maxWait="5000"
driverClassName="com.mysql.jdbc.Driver"
password="yqs2602555"
url="jdbc:mysql://localhost/mysql"/>
第五步:
配置web.xml文件,加入以下内容:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<web-app >
<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>
</web-app>
整个配置就到此结束,下面就是写应用程序测试了!编写testds.jsp以下:
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%!
final String JNDINAME = "java:comp/env/jdbc/mysql";
%>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(JNDINAME);
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from article");
while(rs.next()) {
out.println(rs.getString("title"));
}
} catch(Exception e) {
e.printStackTrace();
}
%>
<%
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
%>
就能够看到mysql数据库下article这张表title字段的内容了。