У меня вопрос, как заставить его работать так, чтобы я запускал сервлет в Eclipse JEE, и он показывал сайт jsp с таблицей данных в результате? Обычно вся страница пуста или я вижу только имена столбцов таблицы. Тем временем я подключен к своей базе данных, это не должно быть проблемой.
Это сервлет. Я полагаю, что проблема должна быть где-то здесь.
@WebServlet("/StudentListService")
public class StudentListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ArrayList<Student> studentList = new ArrayList<Student>();
try {
StudentDAO studentDAO = new StudentDAO();
studentList = studentDAO.getAllStudents();
request.setAttribute("studentList", studentList);
request.getRequestDispatcher("StudentList.jsp").forward(request, response);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Это связанный метод DAO. Я использовал этот класс DAO в предыдущих упражнениях, все должно быть в порядке.
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";
PreparedStatement preparedStatement = dbConnection.prepareStatement(sqlText);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String firstName = resultSet.getString("firstname");
String lastName = resultSet.getString("lastname");
String street = resultSet.getString("streetaddress");
String postCode = resultSet.getString("postcode");
String postOffice = resultSet.getString("postoffice");
studentList.add(new Student(id, firstName, lastName, street, postCode, postOffice));
}
return studentList;
} catch (SQLException sqle) {
throw sqle; // Let the caller decide what to do with the exception
} finally {
closeConnection(dbConnection);
}
}
Это JSP. Я не уверен, что это правильно, это только часть JSP, он должен отображаться в HTML-таблице.
<c:forEach items="${ studentList }" var="studentObject">
<tr>
<td><c:out value="${ studentObject.id}" /></td>
<td><c:out value="${ studentObject.lastName }" /></td>
<td><c:out value="${ studentObject.firstName }" /></td>
<td><c:out value="${ studentObject.street }" /></td>
<td><c:out value="${ studentObject.postCode}" /></td>
<td><c:out value="${ studentObject.postOffice }" /></td>
</tr>
</c:forEach>