我直接在jsp页面中连接mysql数据库成功,代码如下:
<%@ page contentType="text/html;charset=gb2312"%>   
<%@ page import="java.sql.*"%> 
<html>   
<body>   
<%Class.forName("com.mysql.jdbc.Driver").newInstance();   
String url ="jdbc:mysql://localhost/new2007?user=root&password=123&useUnicode=true&characterEncoding=8859_1";
//testDB为你的数据库名 
Connection conn= DriverManager.getConnection(url);   
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);   
String sql="select * from tb_user";   
ResultSet rs=stmt.executeQuery(sql);   
while(rs.next()) {%>   
您的第一个字段内容为:<%=rs.getString(1)%>   
您的第二个字段内容为:<%=rs.getString(2)%>   
<%}%>   
<%out.print("数据库操作成功,恭喜你");%>   
<%rs.close();   
stmt.close();   
conn.close();   
%>   
</body>   
</html> 
后来,我把它改成javabean+jsp的形式:
1、JDBConnection类如下:
package com;
import java.sql.*;                        //导入数据库操作的类public class JDBConnection                //构造方法,初始化
{    private Connection conn;            //连接对象
    private Statement stmt;                //语句对象
    private ResultSet rs;                //结果集对象
    private String accessdriver;        //保存Access驱动程序字符串
    private String accessURL;             //保存Access连接字符串    public JDBConnection()
    {
        //Access驱动程序
        accessdriver = "com.mysql.jdbc.Driver";       
        //连接字符串
        accessURL = "jdbc:mysql://localhost/new2007?user=root&password=123&useUnicode=true&characterEncoding=8859_1";
        conn = null;
    }    //该方法从参数得到数据库路径,并加到连接字符串后面,然后再建立连接
    public Connection getConnToAccess(){
        try{
             Class.forName(accessdriver);
            conn = DriverManager.getConnection(accessURL);
            }catch(Exception e){
                System.out.println("操作数据库出错,请仔细检查");
                System.err.println(e.getMessage());
            }
        return conn;
    }
   
   
       
   //关闭数据库连接
    public void close()
    {
        try{
            //rs.close();
            //stmt.close();
            conn.close();
        }catch(SQLException sqlexception){
            sqlexception.printStackTrace();
        }
    }
}
2、index.jsp代码如下:
<%@ page contentType="text/html;charset=gb2312"%>   
<%@ page import="java.sql.*"%> 
<jsp:useBean id="DBConn" scope="request" class="com.JDBConnection"/>
<html>   
<body>   
<%
Connection conn= DBConn.getConnToAccess();   
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);   
String sql="select * from tb_user";   
ResultSet rs=stmt.executeQuery(sql);   
while(rs.next()) {%>   
您的第一个字段内容为:<%=rs.getString(1)%>   
您的第二个字段内容为:<%=rs.getString(2)%>   
<%}%>   
<%out.print("数据库操作成功,恭喜你");%>   
<%rs.close();   
stmt.close();   
conn.close();   
%>   
</body>   
</html> 
但是运行时提示错误:
org.apache.jasper.JasperException: /index.jsp(3,0) The value for the useBean class attribute com.JDBConnection is invalid.
不知为什么?请高手指点,谢谢!!

解决方案 »

  1.   

    连接相应的数据库的Jar包加进去了没有?
      

  2.   

    你这个类没有被找到
    看一下web-inf\classes\com\下面有没有这个类
      

  3.   

    这样调用
    感觉怪怪的
    scope为什么是request?
    还不如
    <%@ page import="java.sql.*"%> 
    <%@ page import="com.JDBConnection"%> <%
    JDBConnection jDBConn = new JDBConnection();
    Connection conn= jDBConn.getConnToAccess();   
    .................
    %>
      

  4.   

    谢谢各位!
    1、我已经把mysql-connector-java-3.1.14-bin-g.jar和mysql-connector-java-3.1.14-bin.jar放到Tomcat 5.5\common\lib目录下面了呀?
    2、<jsp:useBean id="DBConn" scope="request" class="com.JDBConnection"/>scope之前也是page,但是还是运行错误。
    是不是JDBConnection类连接代码有问题?麻烦各位帮我仔细检查一下。谢谢!!
      

  5.   

    使用Tomcat 常见 "The value for the useBean class attribute is invalid" 错误。
    该错误是指 JSP 中给定的 useBean 标签的 class 属性的值无效(不是 Bean 的属性值)。楼主仔细检查一下还有就是建议不要把数据库连接语句放在前台jsp页面中
    在后台处理比较安全
      

  6.   

    你的JDBConnection类的属性看着怪怪的
    最好都写成局部变量。这样对并发执行的时候才能不出现问题
      

  7.   


    package com;
    import java.sql.*;
    public class DB {
    private static Connection getConn() {
    Connection conn = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager
    .getConnection("jdbc:mysql://localhost:/bbs?user=root&password=root");
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return conn;
    } private static Statement getStmt(Connection conn) {
    Statement stmt = null;
    try {
    stmt = conn.createStatement();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return stmt;
    } private static ResultSet getRs(Statement stmt, String sql) {
    ResultSet rs = null;
    try {
    rs = stmt.executeQuery(sql);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    return rs;
    } public static void closeConn(Connection conn) {
    if (conn != null) {
    try {
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    conn = null;
    }
    } public static void closeStmt(Statement stmt) {
    if (stmt != null) {
    try {
    stmt.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    stmt = null;
    }
    } public static void closeRs(ResultSet rs) {
    if (rs != null) {
    try {
    rs.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    rs = null;
    }
    }
    }
      

  8.   

    同意8楼的意见,代码写的规范有点不好,而且还有关闭资源等问题都要注意要在finally{}块中。
    请楼主写代码时注意一下。
      

  9.   

    导入你的bean,这样:
    <%@ page import="com.JDBConnection"%> <jsp:useBean id="DBConn" scope="request" class="JDBConnection"/>
    看看行不
      

  10.   

    尽量少在JSP中嵌入JAVA代码