Как перенаправить пользователя на пользовательскую веб-страницу после истечения времени ожидания сеанса?

Я хочу перенаправить пользователя на страницу с тайм-аутом сеанса через мой код. Какую логику я могу написать в своем фильтре, который будет проверять, истек ли время ожидания сеанса, и перенаправлять пользователя на эту настраиваемую страницу (скажем, CustomSessionTimeout.jsp). Эта страница не должна проходить какую-либо фильтрацию.

Это сигнатура одного метода в первом фильтре

public void doFilter (ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)


person TechnoCrat    schedule 20.12.2012    source источник


Ответы (1)


Вы можете проверить это, посмотрев, есть ли у пользователя отправил файл cookie сеанса вместе с запросом, который не является больше действителен согласно серверу.

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
        // Session has expired! Now do your job.
        response.sendRedirect(request.getContextPath() + "/CustomSessionTimeout.jsp");
        return;
    }

    chain.doFilter(req, res);
}
person BalusC    schedule 20.12.2012