1

使用 JSP 的默认<session-timeout>设置,我想在会话过期后显示“您的会话已过期(30 分钟)”消息并将用户带回登录页面。

使用((HttpServletRequest) request).getSession(false) == null它来检测它并没有正确地完成工作,因为在用户第一次进入应用程序时会话已经为空,从而使消息立即弹出。

我怎样才能避免这种情况?有没有办法自定义 JSP 的 HttpSession 以便我知道真正的事件何时发生?

4

2 回答 2

1

设置一个指示上次登录的cookie怎么样?如果 cookie 有效且 url 不是登录 url,则可以显示会话超时消息。

于 2012-04-07T06:56:44.900 回答
0

如何使用request.isRequestedSessionIdValid()方法(伪代码):

if(request.getRequestedSessionId() == null) {
  // no session yet -> need to create new one
}
else if(request.isRequestedSessionIdValid()) {
  // we have valid session
}
else {
  // session invalid due to timeout -> handle timeout
}
于 2014-08-11T00:49:07.733 回答