Как вызвать директиву сервлета, чтобы показать вывод на сайте JSP? - PullRequest
0 голосов
/ 10 мая 2018

У меня вопрос, как заставить его работать так, чтобы я запускал сервлет в 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>

1 Ответ

0 голосов
/ 10 мая 2018

для прямого доступа к сервлету отправьте запрос на получение сервлета из браузера, например: localhost: 8080 / your-porject-name / StudentListService

...