как реализовать отслеживание сеансов для страниц JSP - PullRequest
1 голос
/ 08 ноября 2010

Я использую технологию jsp в своем проекте. Я хочу отслеживать сессию в форме входа в систему.После выхода из системы, когда я нажимаю кнопку «Назад», показ сеанса истек. Пожалуйста, помогите мне.

Ответы [ 2 ]

1 голос
/ 08 ноября 2010

Вам не нужно делать это вручную.Сервлетконтейнер сделает это за вас.Вы можете получить доступ к отслеживаемой сессии с помощью HttpServletRequest#getSession().Все, что вам нужно сделать, это поместить зарегистрированного пользователя в качестве атрибута сеанса.

request.getSession().setAttribute("user", user);

Пусть остальная часть вашего кода перехватит это.Для этого обычно используется Filter.

if (request.getSession().getAttribute("user") == null) {
    // Not logged in. Redirect to login page.
    response.sendRedirect("login.jsp");
} else {
    // Logged in. Just continue request.
    chain.doFilter(request, response);
}

Когда вы вызываете выход из системы, просто удалите пользователя из сеанса.

request.getSession().removeAttribute("user");

Сервлет-контейнер будет управлять окончанием сеанса какЧто ж.По истечении этого срока HttpSession будет просто уничтожен, включая все его атрибуты.

Что касается вопроса о кнопке «Назад», просто проинструктируйте клиента не кэшировать ответ, чтобы он был вынужден запустить брендновый запрос, который затем будет передан через Filter.Эта инструкция клиента должна выполняться путем установки соответствующих заголовков ответа.Это можно сделать и за Filter.

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
0 голосов
/ 08 ноября 2010

Во-первых, создание и уничтожение сеанса:

Использование HttpSessionListener .

Реализация sessionCreated(HttpSessionEvent se) с выводом, сообщающим, что сеанс был создан.

Реализация sessionDestroyed(HttpSessionEvent se) с выводом, сообщающим, что сеанс был уничтожен.То есть пользователь вышел из системы или сеанс пользователя истек.

Теперь средняя часть.Используйте фильтр с соответствующей записью web.xml *.jsp для этого фильтра.Внутри вашего фильтра используйте doFilter(ServletRequest request, ServletResponse response, FilterChain chain).В ролях ServletRequest до HttpServletRequest.Используя этот запрос, у вас будет много методов, которые вы можете использовать для отслеживания сеанса.Учетные данные пользователя, URL для посещения, в основном все, что может представлять интерес.

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