Можно ли вручную удалить HttpSession в сервлете? - PullRequest
2 голосов
/ 21 ноября 2011

Я взял класс JSP, и мы узнали, что мы должны всегда удалять все атрибуты HttpSession, прежде чем использовать его. Итак, один из моих одноклассников спросил: «Как насчет того, чтобы мы навсегда удалили HttpSession после того, как мы его использовали?»

Итак, мой вопрос "можно ли удалить HttpSession?"

Из того, что я понимаю до сих пор .... HttpSession создается контейнером сервлета, так же, как HttpServletRequest и HttpServletResponse. Мы получаем его через HttpServletRequest, но не можем удалить его вручную. Вместо этого мы можем установить время ожидания для завершения сеанса. Поскольку мы не можем удалить его, мы должны убедиться, что мы очистим сеанс, прежде чем использовать его. Я прав?

Спасибо!

1 Ответ

15 голосов
/ 21 ноября 2011

Я взял класс JSP, и мы узнали, что мы всегда должны удалять все атрибуты HttpSession, прежде чем использовать его.

Если вы имеете в виду это, вручную используя removeAttribute() для каждого отдельного атрибута, который можно получить с помощью getAttributeNames(), то это не имеет никакого смысла. Я не уверен, что это плохой курс / репетитор или что вы неправильно истолковали курс / репетитора.


Итак, один из моих одноклассников спросил: «Как насчет того, чтобы мы навсегда удалили HttpSession после того, как мы его использовали?»

Да, вы можете «удалить» его, сделав его недействительным.

session.invalidate();
response.sendRedirect("login.jsp");

Любой последующий запрос заставит сервер создать новый сеанс. Перенаправление, кстати, не обязательно, но обязательно, если вы хотите представить представление в новом новом сеансе.

Смотри также:

...