Tomcat5.5.x+Mysql+JSP配置连接池
一、安装JDK(前提条件)
1、下载最新的JDK1.5 (此文中用到的JDK1.5已经集成了IDE5.0)
下载地址:http://java.sun.com/j2se/1.5.0/download-netbeans
文件名为:JDK 5.0 Update 7 with NetBeans IDE 5.0 Bundle(jdk-1_5_0_07-nb-5_0-win-ml.exe)
下载后按照一般的软件安装即可,注意JDK和IDE的安装目录.
2、安装jdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在c:\jdk1.5):
JAVA_HOME=c:\jdk1.5
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin
3、测试JDK是否安装成功:
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac Test.java (如果提示说“javac 不是内部或外部命令”,检查环境变量有没有设置好)
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了。
二、安装Tomcat
1、此文下载的JDK(jdk-1_5_0_07-nb-5_0-win-ml.exe)不仅包含了IDE,而且其中的IDE还集成捆绑了Tomcat 5.5.9。所以此文件(jdk-1_5_0_07-nb-5_0-win-ml.exe)可以说集JSP的运行环境为一体。
如果你只是开发或测试JSP,那么你可以不用再另外安装Tomcat了。
2、另外安装Tomcat
下载最新的Tomcat Tomcat 5.5.x
下载地址:http://tomcat.apache.org/download-55.cgi#5.5.17
下载后按照一般的软件安装即可,安装Tomcat以后(注意端口号,此文为:8080;安装目录为C:\Tomcat),需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:
CATALINA_HOME=C:\Tomcat
CATALINA_BASE=C:\Tomcat
然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的(可以根据实际追加) servlet-api.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\ servlet-api.jar;
接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
三、配置Tomcat
配置Tomcat,让JSP能通过连接池来连接数据库,实际就是在Tomcat里新建一个连接池供JSP连接。
1、将数据库的JDBC驱动程序(此文为:mm.mysql-2.0.4-bin.jar)放置在%TOMCAT_HOME%\common\lib下。如果是使用此文中IDE捆绑的Tomcat,则此目录为:C:\netbeans5.0\enterprise2\jakarta-tomcat-5.5.9\common\lib(C:\netbeans5.0此为IDE的安装目录,根据你的情况而定)
2、在目录:%TOMCAT_HOME%\ conf下,(如果是使用此文中IDE捆绑的Tomcat,则此目录为:
C:\Documents and Settings\Administrator\.netbeans\5.0\jakarta-tomcat-5.5.9_base\conf
注意:不是这个目录C:\netbeans5.0\enterprise2\jakarta-tomcat-5.5.9\conf)
找到context.xml文件(而不是server.xml),如果没有则新建一个此文件。把此文件修改成以下内容:
<!-- The contents of this file will be loaded for each web application -->
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!--
添加的内容开始
-->
<Resource
name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/javatest"
username="admin"
password=""
maxWait="-1"
maxActive="20"
maxIdle="10"
/>
<!--
添加的内容结束
-->
</Context>
以上添加的内容要根据自己的实际情况修改
就这么简单,你的配置工作完成了。
也许还有很多其它的配置方法,但我这个方法绝对是最有效,最简单的配置。还有一点就是要注意各版本的区别。
下面给出测试文件,可以自己测试一下,有些地方要根据自己的情况修改:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>JdbcDateSource Test</title>
</head>
<body>
<%
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
ResultSetMetaData md=null;
try
{
Context initCtx=new InitialContext();
DataSource ds=(DataSource)initCtx.lookup("java:comp/env/jdbc/mysql");
if(ds!=null) {
out.println("已经获得DataSource<br>");
out.println(ds.toString()+"<br>");
conn=ds.getConnection();
stmt=conn.createStatement();
out.println("DataBase连接成功!<p>");
rs=stmt.executeQuery("select * from userinfo");//表需要修改
md=rs.getMetaData();
out.println("<table border=1>");
out.println("<tr>");
for(int i=0;i<md.getColumnCount();i++) {
out.println("<td>"+md.getColumnName(i+1)+"</td>");
}
while(rs.next()) {
out.println("<tr>");
out.println("<td>"+rs.getString(1)+"</td>");//可能要减少字段
out.println("<td>"+rs.getString(2)+"</td>");
out.println("<td>"+rs.getString(3)+"</td>");
out.println("<td>"+rs.getString(4)+"</td>");
out.println("</tr>");
}
out.println("</table>");
conn.close();
}
}
catch(Exception e)
{
out.println(e.toString());
}
%>
</body></html>
测试时注意重启Tomcat,
捆绑的Tomcat也需要手动重启,在IDE左栏的 >> 运行环境 >> 服务器 >> 捆绑的Tomcat(5.5.9), 右击,选择”重新启动”.
常见问题:
一、javax.naming.NameNotFoundException: Name JDBC is not bound in this Context
错误是没有找到数据源,解决方法(不能保证绝对有效):
1、确定是否配置了数据源,即在%TOMCAT_HOME%\ conf\目录下的context.xml或server.xml文件里面有没有类似下面的程序:
<Resource
name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/javatest"
username="admin"
password=""
maxWait="-1"
maxActive="20"
maxIdle="10"
/>
2、在测试文件.JSP中的数据源是否和配置时的数据源相同
3、如果你的数据源是在%TOMCAT_HOME%\ conf\server.xml中配置的,则需要下面的配置(在context.xml中配置的数据源,可以不用):
在你的web文件夹下面的WEB-INF中找到web.xml,在最后</web-app>之前加入<resource-ref>
<description>Test Connection</description>
<res-ref-name>数据源名</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
二、org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
出现这个问题的原因有很多,我开始时就是出现上面的问题,解决后就是出现这个问题,我在网上找了很多的资料,网上有很多的说法,我每一种方法都试过了,可最后还是不行,没有一点反应。到最后我就把JDK,TOMCAT,IDE等全删了,重新再来。
我按照上面的步骤安装配置,最后一切都很顺利,二个问题都没有出现。
所以,这个问题我也不知道该怎么解决,不过我可以把网上看到的资料拿出来大家参考一下,
1、在%TOMCAT_HOME%/conf/Catalina/localhost下新建一个与你web文件夹同名的xml文件
在文件中加入的内容,如下:
<?xml version="1.0" encoding="UTF-8"?><Context>
<Resource
name="jdbc/quickstart"
type="javax.sql.DataSource"
password="123456"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="sa"
url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart"
maxActive="4"/> </Context>
根据个人具体情况进行相应修改。
2、现在%tomcat home%/conf/catalina/localhost 下面添加一段独立的context xml段,命名为jasper.xml,例如
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/jasper" docBase="jasper" debug="1" reloadable="true" crossContext="true">
</Context>
3、在conf下面的context.xml文件中,</Context>之前加入
<ResourceLink name="jdbc/Northwind" global="jdbc/Northwind" type="javax.sql.DataSourcer"/>
4、在你的web文件夹下面的WEB-INF中找到web.xml,在最后</web-app>之前加入
<resource-ref>
<description>Northwind Connection</description>
<res-ref-name>jdbc/Northwind</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
这是我在安装配置时的一点心得,希望对大家有帮助,
如果有什么不对的地方还请大家指点指点
----------------解决方案--------------------------------------------------------