результат сервлета отображается на jsp странице

Существует несколько факторов, которые Вы захотите рассмотреть при решении, где хранить временные данные. Устройство хранения данных сессии является большим для данных, которые характерны для отдельного пользователя. Если Вы находите, что основанный на файле обработчик устройств хранения данных сессии по умолчанию неэффективен, можно реализовать что-то еще, возможно с помощью базы данных или типа кэш-памяти бэкенда. См. session_set_save_handler для большего количества информации

, я нахожу, что это - плохая практика, чтобы хранить общие данные на сессии пользователя. Существуют лучшие места, чтобы хранить данные, к которым будут часто получать доступ несколько пользователей и храня эти данные на сессии, Вы будете копировать данные для каждого пользователя, которому нужны эти данные. В Вашем примере Вы могли бы настроить другой тип механизма устройства хранения данных для этих волновых данных (на основе wave_id), который НЕ связывается конкретно с сессией пользователя. Тем путем Вы раскроете данные, как только и их хранят его где-нибудь, что несколько пользователей могут получить доступ к данным, не требуя другого получения по запросу.

9
задан BalusC 1 December 2009 в 11:10
поделиться

2 ответа

Обычно сервлет не используется для генерации вывода 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 с , например, / page . Поместите JSP в / WEB-INF , чтобы предотвратить прямой доступ. Затем в JSP вы можете использовать EL ( Expression Language ) для доступа к атрибутам с заданной областью:

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

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

26
ответ дан 4 December 2019 в 08:15
поделиться

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

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

RequestDispatcher rd = getServletConfig().getServletContext()
    .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response);
0
ответ дан 4 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: