web_dev
@web_dev

GetCookies from javax.servlet.http.HttpSessionEvent?

Здравствуйте, в одном проекте нужно удалить JSESSIONID в «sessionDestroyed».


Но вот не пойму как мне из javax.servlet.http.HttpSessionEvent выудить cookies.


Понятное дело, что можно было чуток по другому спроектировать раньше, но сейчас стоит именно таков вопрос.

Спасибо за идеи, решения.
  • Вопрос задан
  • 2862 просмотра
Пригласить эксперта
Ответы на вопрос 2
@bobzer
Java EE Developer
Непонятно, откуда удалить?

Получить значение JSESSIONID можно так:
HttpSessionEvent.getSession().getId()

Куки — это клиентский объект, соответственно существует только при обмене данными с клиентом. Поэтому, узнать куки можно из запроса, переданного от клиента (браузера), а изменить их можно в ответе клиенту. Уничтожение сессии, и соответственно событие sessionDestroyed, во многих случаях происходит без какого-либо участия клиента, например веб-сервер «убивает» сессию по таймауту, поэтому доступ к кукам отсутствует.
Ответ написан
Могу что-то путать, но JSESSIONID должен удаляться контейнером и после этого как раз вызывается public void sessionDestroyed(HttpSessionEvent se). Конечно работать с сессионной кукой напрямую плохая идея, нужно вызывать инвалидацию сессии: HttpSession.invalidate() , тем более, что изменить каким либо образом куки можно только отправив их пользователю в HttpServletRespons-е, что значит, что из sessionDestroyed изменить куку никак не выйдет. (если конечно не брать в расчет метод с сохранением респонза в тредлокал -- нельзя быть уверенным в контексте вызова sessionDestroyed)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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