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

时间:2010-01-15 07:59:26

标签: java session servlets

除此之外,还有其他方法可以检查会话的到期时间

session.isNew()

2 个答案:

答案 0 :(得分:29)

是的:

  • 您可以致电HttpServletRequest.getSession(false),如果没有活动,您将获得null而不是会话。

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

答案 1 :(得分:24)

使用session.isNew,您无法将过期的会话与全新的会话区分开来。 您可以通过以下方式检查会话是否已过期和/或超时:

if (request.getRequestedSessionId() != null
        && !request.isRequestedSessionIdValid()) {
    // Session is expired
}

使用getRequestedSessionId区分新会话和现有(有效/已过期)会话,并使用isRequestedSessionIdValid区分有效会话和新会话/已过期会话。

您可以将此代码放在Filter