回 帖 发 新 帖 刷新版面

主题:[讨论].JSP通过数据源访问数据库时出错!!!!

我用的是Tomcat5.5,MySQL数据库。并且server.xml和web.xml文件也都从新设置了。
然后我把DbJsp.jsp放在webapps\bookstore\目录下。数据库也已经建好了,JDBC驱动程序也拷贝到了common\lib目录下。当我访问DbJsp.jsp时,弹出下面的提示:

Cannot create JDBC driver of class '' for connect URL 'null'

请大家帮我看看是怎么一回事?

DbJsp.jsp代码如下:
<!--首先导入一些必要的packages-->
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="com.mysql.jdbc.Connection"%>
<!--设置中文输出-->
<%@ page contentType="text/html; charset=GB2312" %>
<html>
<head>
<title>DbJsp1.jsp</title>
</head>
<body>
<%
//以try开始
try
{
java.sql.Connection con;
Statement stmt;
ResultSet rs;

//建立数据库连接
Context ctx = new InitialContext();
DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/BookDB");
con = ds.getConnection();
//创建一个JDBC声明
stmt = con.createStatement();
//增加新记录
stmt.executeUpdate("INSERT INTO books (id,name,title,price) VALUES ('999','Tom','Tomcat Bible',44.5)");
//查询记录
rs = stmt.executeQuery("SELECT id,name,title,price from books");
//输出查询结果
out.println("<table border=1 width=400>");
while (rs.next())
{
String col1 = rs.getString(1);
String col2 = rs.getString(2);
String col3 = rs.getString(3);
float col4 = rs.getFloat(4);

//convert character encoding
col1=new String(col1.getBytes("ISO-8859-1"),"GB2312");
col2=new String(col2.getBytes("ISO-8859-1"),"GB2312");
col3=new String(col3.getBytes("ISO-8859-1"),"GB2312");

//打印所显示的数据
out.println("<tr><td>"+col1+"</td><td>"+col2+"</td><td>"+col3+"</td><td>"+col4+"</td></tr>");
}
out.println("</table>");

//删除新增加的记录
stmt.executeUpdate("DELETE FROM books WHERE id='999'");

//关闭数据库连结
rs.close();
stmt.close();
con.close();
}

//捕获错误信息
catch (Exception e) {out.println(e.getMessage());}

%>
</body>
</html>[color=FF0000]Cannot create JDBC driver of class '' for connect URL 'null'[/color][color=000000][/color]

回复列表 (共7个回复)

沙发

看看java连接mysql的方法!

板凳

能不能说详细点啊
我是个新手
书,我看了的,不懂啊

3 楼

看提示应该是你server.xml里面的driverClassName和url没配好,再去看看,或者把你那两段配置发上来看看

4 楼

以下是我的配置文件webapp\bookstore下的文件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/j2ee/dtds/web-app_2_3.dtd'>

<web-app>

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/BookDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

</web-app>

server.xml文件中加了以下东西
<Context path="/bookstore" docBase="bookstore" debug="0"
reloadable="true">


<Resource name="jdbc/BookDB"
auth="Container"
type="javax.sql.DataSource"/>


<ResourceParams name="jdbc/BookDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>

<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>

<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>

<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>

<parameter>
<name>username</name>
<value>dbuser</value>
</parameter>
<parameter>
<name>password</name>
<value>1234</value>
</parameter>

<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>

<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/BookDB?autoReconnect=true</value>
</parameter>
</ResourceParams>

</Context>

5 楼

我也是这几天才弄这个东西,看了一下,发现你web.xml跟我的比好像少了下面这句:
<ResourceLink name="jdbc/query" global="jdbc/query" type="javax.sql.DataSourcer"/>
下面是我的配置,你可以参考参考,不过我觉得不写些配置,我现在都是在工程里写好className,url,user,password,然后在servlet里读取出来先forName(className),再getConnection(url,user,password),当然我不知道jsp可不可以这样做,按理说是可以的,但可能会写多一些语句.

6 楼

web.xml

<web-app>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

<resource-ref>
    <description>
        datasource jdbc/testpool
    </description>
    <res-ref-name>
        jdbc/testpool
        <!--对应server.xml中的数据源名称-->
    </res-ref-name>
    <res-type>
        javax.sql.DataSource
    </res-type>
    <res-auth>
        Container
    </res-auth>
</resource-ref>

<welcome-file-list>
    <welcome-file>
        index.jsp
    </welcome-file>
    <welcome-file>
        index.html
    </welcome-file>
    <welcome-file>
        index.htm
    </welcome-file>
</welcome-file-list>

<ResourceLink name="jdbc/query" global="jdbc/query" type="javax.sql.DataSourcer"/>

</web-app>

7 楼

server.xml

<Context path="/dstest" docBase="dstest" debug="0" reloadable="true" crossContext="true">    
        <Resource name="jdbc/query"   auth="Container" type="javax.sql.DataSource"                                 driverClassName="org.gjt.mm.mysql.Driver" 
            maxIdle="20" maxWait="5000" 
            username="root"                         
            password="850921mlj"                 
            url="jdbc:mysql://localhost:3306/dstest"       
            maxActive="100"    
            removeAbandoned="true" 
            removeAbandonedTimeout="60"             
            logAbandoned="true"
        />
    </Context>

我来回复

您尚未登录,请登录后再回复。点此登录或注册