java - servlet 连接 mysql 时未找到类异常

标签 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;
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 文件夹解决了我的问题。

关于java - servlet 连接 mysql 时未找到类异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15387918/

相关文章:

java - Selenium WebDriver : clicking on elements within an SVG using XPath

java - 如何在java中正确编码这个URL?

mysql - 在rails项目中制作Docker Image时出现错误(无法安装mysql-client)

php - MySQL 查询在更新后以不同的顺序返回列

java - 我可以在 Java Web 应用程序中使用 Servlet 来使用 Facelet 吗?

java - CSS 文件未加载?

java - 在 SERVLET 中解析日期时遇到问题

java - 数字总和程序错误

java - kendo taglib jar 的 Maven 依赖项

php - PHP脚本对我的数据库不起作用