как да внедрите проследяване на сесии за jsp страници

Използвам jsp технология в моя проект. Искам да направя проследяване на сесии във формата си за вход. След излизане, когато натисна бутона за връщане, трябва да се покаже, че сесията е изтекла. Моля, помогнете ми.


person Khaja moin    schedule 08.11.2010    source източник


Отговори (2)


Не е необходимо да го правите ръчно. Контейнерът за сервлети ще го направи вместо вас. Можете да получите достъп до проследената сесия чрез 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.
person BalusC    schedule 08.11.2010

Първо, създаване и унищожаване на сесия:

Използвайте HttpSessionListener.

Приложете sessionCreated(HttpSessionEvent se) с изход, който ви казва, че е създадена сесия.

Приложете sessionDestroyed(HttpSessionEvent se) с изход, който ви казва, че сесията е унищожена. Това означава, че потребителят е излязъл от системата или потребителската сесия е изтекла.

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

person darioo    schedule 08.11.2010