java - 如何检测过期 session 与无 session

标签 java spring tomcat filter listener

需求是这样的:当用户 session 过期时,调用expired.htm页面,但在第一次连接到网站时,显示login.htm。

我尝试使用过滤器但它不起作用,我无法告诉过滤器如何理解它是新请求还是旧请求已过期。这是我使用的代码:

if (session.getAttribute("userProfile") == null) {

    logger.debug("Session: " + ( session.isNew() ? "true" : "false"));
    logger.debug(request.getSession().isNew()); 

    if ( request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid() )  {
        return new ModelAndView("redirect:expired.htm");
    } else {
        return new ModelAndView("redirect:login.htm");
    }


}

我尝试了在 Stack Overflow 和一般互联网上提出的不同解决方案,但没有任何效果,每个请求都转到 expired.htm

最佳答案

如何获取 session 对象?在这样做之前,使用

if (request.getSession(false)==null) {
  // no session present (expired or new visitor)
  [... do something ...]
} else {
  // active session present
}

关于java - 如何检测过期 session 与无 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502308/

相关文章:

Spring Cloud 多个 RestTemplate

jsp - JspFactory 类型未定义方法 getJspApplicationContext(ServletContext)

java - SQL如何使用prepareStatement更新指定字段为int和double的IsNull?

java - 在 springboot 中使用 Autowiring 获取 NullpointerException (奇怪的场景)

java - 如何在Spring应用程序中配置DEV部分?

java - 当 web 服务停止工作时,为什么我看到很多套接字处于 CLOSE_WAIT 状态?

angular - 如何使用 tomcat 或应用程序服务器的环境变量以 Angular 配置基本 href?

java - Matlab Java 互操作性

java - HttpClient 和上传进度 - ProgressListener 缺失

java - Spring REST Web 服务每天的第一个请求很慢