Jsf 会话超时处理

Jsf 会话超时处理,jsf,session-timeout,Jsf,Session Timeout,我已经在服务器中配置了会话超时,并添加了一个过滤器来处理会话超时。但当我试图将其重定向回登录页面时,它不起作用。我搜索了一下网,但没有找到任何可靠的东西。我正在使用jsf。。我的代码 public class SessionTimeoutFilter implements Filter { private String timeoutPage = "login.seam"; public void init(FilterConfig filterConfig) throws ServletEx

我已经在服务器中配置了会话超时,并添加了一个过滤器来处理会话超时。但当我试图将其重定向回登录页面时,它不起作用。我搜索了一下网,但没有找到任何可靠的东西。我正在使用jsf。。我的代码

public class SessionTimeoutFilter implements Filter {

private String timeoutPage = "login.seam";
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest request, 
  ServletResponse response, FilterChain filterChain) throws IOException,ServletException {
if ((request instanceof HttpServletRequest) 
   && (response instanceof HttpServletResponse)) 
{
    HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    HttpServletResponse httpServletResponse = (HttpServletResponse) response;
    if (isSessionControlRequiredForThisResource(httpServletRequest)) {
        if (isSessionInvalid(httpServletRequest)) 
        {
            String timeoutUrl = httpServletRequest.getContextPath() 
           + "/" + getTimeoutPage();
            System.out.println("Session is invalid! redirecting to timeoutpage : " + timeoutUrl);
            httpServletResponse.sendRedirect(timeoutUrl);
            return;
        }
    }
}
filterChain.doFilter(request, response);
}

谁能告诉我我做错了什么。。。为什么sendredirect没有响应

也许此解决方案适合您的需要:


如果您需要在会话超时时执行某些操作,您还可以在会话statefull bean上创建@Destory注释方法。

重定向正在发生,但页面没有更改,仍然显示相同的页面。。。