原來都是通過編寫一個數據庫連接類的方式來訪問數據庫:
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConnect
{
public static Connection getConnection()
{
Connection con = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1/mydatabase";
Connection con = DriverManager.getConnection(url,"root","");
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery("select * from student");
while(rs.next())
{
System.out.println(rs.getString(2));
}
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
return con;
}
通過以上的代碼,我們就可以在任意的地方,通過靜態方法來訪問數據庫!還是比較方便的,但是也有一點不好的地方,就是在tomcat下,多個項目都要用的話,還是要寫多次(可能也是我不會搞),我就想到如果在數據源裏面配置一次,就全部搞定了!
研究了一下,配置還是比較簡單的:
我的一些環境配置:tomcat 安裝在D:\jakarta-tomcat-4.1.31
配置目錄在D:\jakarta-tomcat-4.1.31\conf ,這個目錄下有一個重要的文件server.xml
我的項目在:D:\jakarta-tomcat-4.1.31\webapps\ABC
項目的配置文件在:D:\jakarta-tomcat-4.1.31\webapps\ABC\WEB-INF\web.xml
測試用的jsp文件在:D:\jakarta-tomcat-4.1.31\webapps\ABC\test.jsp
幾個注意點如下:
1.修改tomcat的配置文件server.xml
在</host>關標簽前,添加一個<Context>...</Context>
具體如下:
<Context path="/ABC" docBase="ABC" debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_DBCP_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/my" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/my">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>5</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>500</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>50</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://127.0.0.1/STUDENTDB?autoReconnect=true&autoReconnectForPools=true&maxReconnects=10&useUnicode=true&characterEncoding=GBK</value>
</parameter>
</ResourceParams>
</Context>
其中紅色的ABC是我們tomcat中項目的名字
藍色的jdbc/my是數據庫的JNDI名字
加重顔色的username 和 password 就是訪問mysql的用戶名和密碼
com.mysql.jdbc.Driver 是連接mysql數據庫的驅動
jdbc:mysql://127.0.0.1/STUDENTDB 是連接數據庫的字符串,其中 studentdb是數據庫的名字
2.配置 項目中的web.xml
在 web.xml文件中添加 以下內容
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<resource-ref>
<description>asd</description>
<res-ref-name>jdbc/my</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
3.編寫 jsp文件測試配置
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="javax.naming.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
try
{
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/my");
Connection con = ds.getConnection();
Statement stat = con.createStatement();
ResultSet rs = stat.executeQuery("select * from student");
while (rs.next())
{
System.out.println(rs.getString(2));
out.println(rs.getString(2));
}
}
catch (NamingException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}
%>
</body>
</html>
通過以上3步,就可以實現數據源的配置! tomcat 5.x 的配置方法一樣!