У меня есть упражнение, которое требует создания:
проблема - я не могу открыть соединение с базой данных в сервлете. Когда я отлаживаю файл сервлета, он сломался в строке, создающей новый объект 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>
Вид проводника проекта:
Судя по вашему изображению, у вас даже нет папки lib внутри WEB-INF.