请高手帮忙看一下,我都折腾好几天了!!!我建立了一个普通查找数据源并访问连接,测试成功,但是当我把查找资料源和访问连接的操作封装成一个工具类后,测试就失败,每次报下面的错误:
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 10 in the jsp file: /ch16/conpool.jsp
DatabaseConn cannot be resolved
7:  <%@ page import="java.sql.*"%>
8:  <% 
9:     Connection conn=null;
10:     conn = DatabaseConn.getConnection();
11:     Statement stmt=conn.createStatement();
12:     ResultSet rst=stmt.executeQuery("select * from book");
13:     out.println("以下是从数据库中读取出来的数据");
下面是测试失败的代码:1.建立一个数据库连接工具类DatabaseConn.javapackage com.jspdev.util;import java.sql.*;
import javax.naming.*;
import javax.sql.DataSource;
//一个用于查找数据源的工具类。
public class DatabaseConn {
    public  static  synchronized Connection getConnection() throws Exception
    {
        try
        {
            
            Context initCtx = new javax.naming.InitialContext(); 
            Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
            DataSource ds = (DataSource)envCtx.lookup("jdbc/testdb"); 
            return ds.getConnection();
        }
        catch(SQLException e)
        {
            throw e;
        }
        catch(NamingException e)
        {
             throw e;
        }
        
    }}
2.建立一个jsp页面
<%@ page contentType="text/html; charset=gb2312" %>
 <%@ page import="com.jspdev.util.*"%>
 <%@ page import="javax.naming.Context" %> 
 <%@ page import="javax.sql.DataSource"%> 
 <%@ page import="javax.naming.InitialContext"%> 
 <%@ page import="java.sql.*"%>
 <% 
    Connection conn=null;
    conn = DatabaseConn.getConnection();
    Statement stmt=conn.createStatement();
    ResultSet rst=stmt.executeQuery("select * from book");
    out.println("以下是从数据库中读取出来的数据");
    while(rst.next())
    {
    out.println("name:"+rst.getString("name"));
    out.println("<br>");    
    }
 %> 但我用下面代码测试,则可以成功:
 
<!--测试数据源-->
 <%@ page contentType="text/html; charset=gb2312" %>
 <%@ page import="javax.naming.Context" %> 
 <%@ page import="javax.sql.DataSource"%> 
 <%@ page import="javax.naming.InitialContext"%> 
 <%@ page import="java.sql.*"%>  <% 
   DataSource ds = null; 
   try{ 
     Context initCtx = new InitialContext(); 
     Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
    //从Context中lookup数据源。
     ds = (DataSource)envCtx.lookup("jdbc/testdb"); 
    if(ds!=null) 
    {
    out.println("已经获得DataSource!"); 
    out.println("<br>");
    Connection conn = ds.getConnection();
    Statement stmt=conn.createStatement();
    ResultSet rst=stmt.executeQuery("select * from book");
    out.println("以下是从数据库中读取出来的数据");
    while(rst.next())
    {
    out.println("bookName:"+rst.getString("bookName"));
    out.println("<br>");    
    }
    }
    else 
     out.println("连接失败!"); 
    }
    catch(Exception ne)
    {
     out.println(ne);
    } 
 %> 

解决方案 »

  1.   

    conn = DatabaseConn.getConnection(); DatabaseConn这个是个什么类?
    应该是错在这里了
      

  2.   

    这是个数据库连接工具类:DatabaseConn.java package com.jspdev.util; import java.sql.*; 
    import javax.naming.*; 
    import javax.sql.DataSource; 
    //一个用于查找数据源的工具类。 
    public class DatabaseConn { 
        public  static  synchronized Connection getConnection() throws Exception 
        { 
            try 
            { 
                 
                Context initCtx = new javax.naming.InitialContext();  
                Context envCtx = (Context) initCtx.lookup("java:comp/env");  
                DataSource ds = (DataSource)envCtx.lookup("jdbc/testdb");  
                return ds.getConnection(); 
            } 
            catch(SQLException e) 
            { 
                throw e; 
            } 
            catch(NamingException e) 
            { 
                 throw e; 
            } 
             
        } } 
    不知道这个类有什么问题,还忘指点,谢谢