如何检查java中的会话已经过期?

use*_*924 14 java session servlets

有没有其他方法来检查除此之外的会话到期

session.isNew()

Car*_*icz 29

是:

  • 如果没有一个活动,你可以打电话给HttpServletRequest.getSession(false)你,null而不是一个会话.

  • 你可以在你的中定义生命周期监听器(使用HttpSessionListener)web.xml.通过这种方式,您可以在会话咬人的那一刻得到通知.

  • +1为第二个建议.顺便说一句,它的名字很好,所以HttpSessionListener就是其中之一. (2认同)
  • 实现`HttpSessionListener`是可行的方法.只需挂钩`sessionDestroyed()`. (2认同)

Dan*_*nga 24

随着session.isNew你无法区分全新的会话过期会话.您可以检查会话是否已过期和/或超时:

if (request.getRequestedSessionId() != null
        && !request.isRequestedSessionIdValid()) {
    // Session is expired
}
Run Code Online (Sandbox Code Playgroud)

使用getRequestedSessionId新的和现有的(有效/过期)会话之间进行区分,并且使用isRequestedSessionIdValid区分betwheen有效的和新的/过期的会话.

您可以将此代码放在过滤器中.