Как закрыть конкретный сеанс в Java EE - PullRequest
3 голосов
/ 17 марта 2011

Как я могу закрыть определенный сеанс, если у меня открыто несколько сеансов следующим образом:

String userName = (String) session.getAttribute("userName");
HashMap cartList = (HashMap) session.getAttribute("cartList");

Если я хочу закрыть сеанс cartList, какой код мне использовать?Я попытался использовать следующее:

  1. session.invalidate(), но он закрывает все.
  2. session.removeAttribute("cartList"); это не закрыло мою сессию.

Ответы [ 4 ]

6 голосов
/ 17 марта 2011

У вас нет нескольких открытых сеансов на одного посетителя.У вас есть только один сеанс на посетителя.Вы просто храните атрибуты в нем.«Закрытие» сеанса происходит методом invalidate().Он уничтожает весь сеанс и отменяет привязку всех атрибутов.Любой следующий HTTP-запрос приведет к новому новому сеансу.

Похоже, вы просто хотите отменить привязку корзины покупок.Метод removeAttribute("name") является правильным решением.Он удалит атрибут из сеанса, так что он больше не будет доступен getAttribute("name") или ${name} в текущем ответе и всех последующих запросах / ответах.То, что это, по-видимому, не сработало, скорее всего просто неверное представление с вашей стороны.

См. Также:

2 голосов
/ 17 марта 2011

session.invalidate() отменяет привязку всех объектов, которые были к нему привязаны, а session.removeAttribute("cartList") отменяет привязку объекта cartList из сеанса.

2 голосов
/ 17 марта 2011

Попробуйте получить доступ

HashMap cartList = (HashMap) session.getAttribute("cartList");

после session.removeAttribute("cartList");

Это даст вам ноль в "cartList"

2 голосов
/ 17 марта 2011

By

String userName = (String) session.getAttribute("userName");
HashMap cartList = (HashMap) session.getAttribute("cartList");

Вы не создаете сессию этим, вы просто читаете атрибуты из сеанса, на которые ссылается session.


См.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...