Это не имеет смысла. Забудьте request.getSession(boolean)
. Просто получите сеанс по request.getSession()
и никогда не беспокойтесь о недействительности / валидности.
Если вы хотите передать данные через атрибуты сеанса, просто введите test1
:
request.getSession().setAttribute("test", "foo");
и test2
(что, конечно, запрашивается в том же сеансе после test1
):
String test = (String) request.getSession().getAttribute("test"); // Returns "foo".
Редактировать: Что касается использования сеанса для проверки входа в систему User
, просто сделайте что-то похожее на код входа в систему:
User user = userDAO.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
} else {
// Show error?
}
и затем в Filter
, который отображается на url-pattern
, который представляет ограниченную область, просто проверьте, присутствует ли User
или нет:
if (((HttpServletRequest) request).getSession().getAttribute("user") != null) {
chain.doFilter(request, response); // Just continue.
} else {
((HttpServletResponse) response).sendRedirect("login"); // Not logged-in, redirect to login page.
}
и когда вы выходите из системы, вы просто удаляете User
из сеанса:
request.getSession().removeAttribute("user");
// Or, more drastically:
request.getSession().invalidate();
В качестве альтернативы вы также можете посмотреть декларативную Управляемую контейнером безопасность с помощью нескольких простых записей в web.xml
и server.xml
. Таким образом, вам не нужно возиться с логикой входа / фильтрации самостоятельно.