Драйвер JDBC не найден (сервлет, DAO, mariaDB)

У меня есть упражнение, которое требует создания:

  1. JSP - для отображения данных, пересылаемых сервлетом
  2. сервлет - для получения данных из класса DAO и пересылки в JSP
  3. класс DAO - для подключения и извлечения данных из базы данных mariaDB

проблема - я не могу открыть соединение с базой данных в сервлете. Когда я отлаживаю файл сервлета, он сломался в строке, создающей новый объект DAO (я выделил строку в ** ... ** ниже), в файле DAO он не может открыть соединение с сообщением «Не найден подходящий драйвер для jdbc: mysql: // localhost: 3306 / a1605354 "; хотя я добавил драйвер jdbc для mariaDB в путь сборки.

В конце поста я поместил изображение своего проводника проекта. Я настолько сбит с толку и не понимаю, в чем проблема, чтобы ее исправить. Очень нужна твоя помощь!

У меня есть файл с именем «Параметры подключения» со всей информацией, необходимой для подключения к mariaDB:

ConnectionParameter.java

public class ConnectionParameters {

public static final String username = "a1605354"; 
public static final String password = "jaZEMs85o";


private static final String databaseName = username;
public static final String databaseURL = "jdbc:mysql://localhost:3306/" + databaseName;
public static final String jdbcDriver = "org.mariadb.jdbc.Driver";

// PK violation: error code in MariaDB is 1062
public static final int PK_VIOLATION_ERROR = 1062;
}

StudentDAO.java

public class StudentDAO {
private final String username;
private final String password;
private final String databaseURL;

public StudentDAO() throws Exception {
    username = ConnectionParameters.username;
    password = ConnectionParameters.password;
    databaseURL = ConnectionParameters.databaseURL;

    try {
        Class.forName(ConnectionParameters.jdbcDriver);
    } catch (Exception ex) {
        System.out.print(ex.getMessage());
    }
}

private Connection openConnection() throws SQLException {
    Connection dbConnection = DriverManager.getConnection(databaseURL, username, password);
    return dbConnection;
}

private void closeConnection(Connection dbConnection) throws SQLException {
    if (dbConnection != null) {
        dbConnection.close();
    }
}

public ArrayList<Student> getAllStudents() throws SQLException {
    ArrayList<Student> studentList = new ArrayList<Student>();
    Connection dbConnection = null;

    try {
        dbConnection = openConnection();
        String sqlText = "SELECT id, firstname, lastname, streetaddress, postcode, postoffice FROM Student ORDER BY lastname";

        Statement statement = dbConnection.createStatement();

        ResultSet resultSet = statement.executeQuery(sqlText);

        while (resultSet.next()) {
            int id = resultSet.getInt("id");
            String firstname = resultSet.getString("firstname");
            String lastname = resultSet.getString("lastname");
            String streetaddress = resultSet.getString("streetaddress");
            String postcode = resultSet.getString("postcode");
            String postoffice = resultSet.getString("postoffice");

            studentList.add(new Student(id, firstname, lastname, streetaddress, postcode, postoffice));
        }

        return studentList;
    } catch (SQLException sqle) {
        throw sqle;
    } finally {
        closeConnection(dbConnection);
    }
}

StudentListServlet.java

@WebServlet("/StudentListServlet")
public class StudentListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    try {
        **StudentDAO studentDAO = new StudentDAO();**
        ArrayList<Student> studentList = studentDAO.getAllStudents();


        request.setAttribute("studentList", studentList);
        request.getRequestDispatcher("StudentList.jsp").forward(request, response);

    } catch (Exception ex) {
        ex.getMessage();
    }

  }

}

StudentList.jsp

<%@ page language = "java" contentType = "text/html; charset=ISO-8859-1" pageEncoding = "ISO-8859-1" %>
<body>
    <h2>List of Students</h2>
    <br/>
    <form action = "StudentListServlet" method = "GET"></form>
    <table>
        <thead>
            <tr>
                <th>Student ID</th><th>Last Name</th><th>First Name</th><th>Street</th><th>Postcode</th><th>Post Office</th>
            </tr>
        </thead>
        <tbody>
            <c:forEach items = "${ studentList }" var = "studentListObject">
                <tr>
                    <td><c:out value = "${studentListObject.id }" /></td>
                    <td><c:out value = "${studentListObject.lastname }" /></td>
                    <td><c:out value = "${studentListObject.firstname }" /></td>
                    <td><c:out value = "${studentListObject.streetaddress }" /></td>
                    <td><c:out value = "${studentListObject.postcode }" /></td>
                    <td><c:out value = "${studentListObject.postoffice }" /></td>
                </tr>
            </c:forEach>
        </tbody>
    </table>
</body>

Вид проводника проекта:

Драйвер JDBC не найден (сервлет, DAO, mariaDB)

хотя я добавил драйвер jdbc для mariaDB в путь сборки ты в этом уверен? У вас есть драйвер jdbc для Maria DB в папке WEB-INF / lib?
Luiggi Mendoza 01.05.2018 17:53

Судя по вашему изображению, у вас даже нет папки lib внутри WEB-INF.

Luiggi Mendoza 01.05.2018 17:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
123
0

Другие вопросы по теме