отображение результатов сервлета на странице jsp - PullRequest
9 голосов
/ 01 декабря 2009

Как переслать вывод сервлета на страницу jsp?

Это означает, что результат будет отображаться на странице JSP.

Ответы [ 3 ]

26 голосов
/ 01 декабря 2009

Обычно вы не используете сервлет для генерации вывода HTML. Вы обычно используете JSP / EL для этого. Использование out.write и консорт для потоковой передачи содержимого HTML считается плохой практикой. Лучше использовать атрибуты запроса.

Например:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    Object data = "Some data, can be a String or a Javabean";
    request.setAttribute("data", data);
    request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
}

Отобразите это в файле web.xml на <url-pattern>, например, /page. Поместите JSP в /WEB-INF, чтобы предотвратить прямой доступ. Затем в JSP вы можете использовать EL ( Expression Language ) для доступа к атрибутам области:

<p>The data from servlet: ${data}</p>

Позвоните сервлету по http://example.com/context/page. Просто как тот. Таким образом, вы управляете выводом и представлением в одном месте, JSP.

0 голосов
/ 23 августа 2012
getServletConfig().getServletContext()
    .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response);

имеет тип VOID, не может вернуть RequestDispatcher rd.

0 голосов
/ 01 декабря 2009

Чтобы переслать запрос / ответ от сервлета чему-либо другому (например, JSP), вам нужно взглянуть на класс RequestDispatcher. Класс ServletContext имеет метод для получения диспетчера, который можно вызывать из сервлета.

Например (в методе сервлета doPost / doGet):

RequestDispatcher rd = getServletConfig().getServletContext()
    .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...