Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在连接mysql的servlet中未找到类异常_Java_Mysql_Servlets_Classnotfoundexception - Fatal编程技术网

Java 在连接mysql的servlet中未找到类异常

Java 在连接mysql的servlet中未找到类异常,java,mysql,servlets,classnotfoundexception,Java,Mysql,Servlets,Classnotfoundexception,我试图在servlet中连接mysql数据库。然后我得到一个异常。但是当我从一个普通Java类测试数据库连接时,连接正常,我从数据库获得数据。我在tomcat服务器控制台上得到的异常是: java.lang.ClassNotFoundException:com.mysql.jdbc.Driver 我的DatabaseHandler.java的代码是: import java.sql.*; public class DatabaseHandler { private Statement stmt;

我试图在servlet中连接mysql数据库。然后我得到一个异常。
但是当我从一个普通Java类测试数据库连接时,连接正常,我从数据库获得数据。
我在tomcat服务器控制台上得到的异常是:
java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

我的
DatabaseHandler.java
的代码是:

import java.sql.*;
public class DatabaseHandler {
private Statement stmt;
private Connection con;
String username = "root";
String password = "thunder";
String dbname = "bidderboy";
public DatabaseHandler()
{
    this.createConnection();
}

private void createConnection()
{
    //create the connection for first time
    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        con = DriverManager.getConnection("jdbc:mysql://localhost/"+dbname , username , password);
        stmt = con.createStatement();

    } catch (Exception ex) {
        System.out.println(ex.toString());
    }
}
public int executeUpdate(String sql)
{
    int result = 0;

    //before update checks if connection is open
    try {
        if(con.isClosed()) {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://localhost/"+dbname , username , password);
            stmt = con.createStatement();
        }
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }

    //try to executeUpdate the sql command
    try{
        result = stmt.executeUpdate(sql);
    }
    catch(Exception ex){
        System.out.println("Couldn't executeUpdate sql command");
    }
    return result;
}

public ResultSet executeQuery(String sql)
{
    ResultSet rs = null;
    //before Query checks if connection is open
    try {
        if(con.isClosed()) {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+dbname , username , password);
            stmt = con.createStatement();
        }
    } catch (Exception ex) {
        System.out.println(ex.toString());
    }

    //try to executeQuery the sql command
    try{
        rs = stmt.executeQuery(sql);
    }
    catch(Exception ex){
        System.out.println("Couldn't executeQuery sql command");
    }
    return rs;
}

public void closeConnection()
{
    //if connection is open try to close the connection
    try {
        if(!con.isClosed()) {
            con.close();
        }
    } catch (SQLException ex) {
        System.out.println("Failed to close database connection");
    }
}
}
我的servlet的代码是:

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@SuppressWarnings("serial")
public class UserLogin extends HttpServlet{

public UserLogin()
{

}

@Override
public void init(ServletConfig config) throws ServletException {
    super.init(config);
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    DatabaseHandler dbh = new DatabaseHandler();
    String username="mamun";
    String password="1234";

    String dbusername="";
    String dbpassword="";

    String sql = "select * from users where username='"+username+"' and password='"+password+"'";
    ResultSet rs = dbh.executeQuery(sql);
    try {
        while(rs.next())
        {
            dbusername = rs.getNString(1);
            dbpassword = rs.getNString(2);
        }
    } catch (SQLException e) {}
    System.out.println(dbusername+" "+dbpassword);
}
}
我从中获取数据的普通java类的代码是:

import java.sql.ResultSet;
import java.sql.SQLException;

public class DatabaseConnectionTest {

public static void main(String[] args) {
    String sql = "Select * from users";
    DatabaseHandler dbh = new DatabaseHandler();

    ResultSet rs = dbh.executeQuery(sql);

    try {
        while(rs.next())
        {
            String n = rs.getNString(1);
            String c = rs.getNString(2);
            System.out.println("Name: "+n+" Contact: "+c);
        }
    } catch (SQLException ex) {
        System.out.println(ex.toString());
    }
}
}

任何人请解释为什么我得到这个类没有发现异常和什么可以解决。提前感谢。

mysql-connector-java-5.1.11-bin.jar
文件添加到
WEB-INF/lib
文件夹中修复了我的问题。

确保在lib文件夹中有mysql-jdbc jar。将
jar
com.mysql.jdbc.Driver
一起添加到您的类路径。关于这方面的问题太多了。ClassNotFoundException是什么上面写着:找不到类。它甚至给出了找不到的类的名称:com.mysql.jdbc.Driver。所以-检查类路径中的所有JAR(最有可能在WEB-INF/lib中),看看是否缺少包含com.mysql.jdbc.Driver的JAR,可能称为mysql连接器java-(version).javaOK.Thank。知道了。