Обновление сеанса другого сервлета
У меня проблема с обработкой сеансов между сервлетом Java, страницей jsp и Struts Action. Java-сервлет добавляет несколько параметров в сессию, когда получает запрос и sendRedirect для некоторого page1.jsp. На странице 1 у меня есть URL-адрес Struts Action, например strutsAction.do. Когда StrutsAction получает запрос, сеанс не содержит атрибутов, которые я добавил в сервлет Java. Нажатие на страницу, возвращаемую этим действием, не обновляет сеанс Java-сервлета, но у них один и тот же SessionId. Так после session.getMaxInactiveInterval()
сеанса сервлета я получаю sessionDestroyed()
событие, даже когда я выполняю действия на странице, возвращаемой StrutsAction. Как исправить эту проблему?
1 ответ
В случае вызова SendRedirect старый объект запроса и ответа теряется, потому что он обрабатывается как новый запрос,
Вы должны попробовать следующий код
RequestDispatcher rd = servletContext.getRequestDispatcher("/pathToResource");
rd.forward(request, response);
поскольку при вызове forward для объекта requestdispather мы передаем объект request и response, поэтому наш старый объект request присутствует на новом ресурсе, который будет обрабатывать наш запрос.