识别会话超时

Yot*_*amB 4 java servlets session-timeout

我正在使用servlet构建一个java web棋盘游戏.我需要知道用户何时没有回答30秒,我正在使用

session.setMaxInactiveInterval(30);
Run Code Online (Sandbox Code Playgroud)

但是我需要在服务器端知道一旦时间结束,所以我可以使这个播放器相当.

现在,一旦玩家返回并尝试做某事,他将获得超时,我可以在服务器上看到.

一旦会话超时,我怎么能在servlet中知道?!

谢谢.

sku*_*sel 16

您需要实现该HttpSessionListener接口.它在创建或销毁会话时接收通知事件.特别是,sessionDestroyed(HttpSessionEvent se)当会话被销毁时会调用其方法,这在超时期限结束/会话失效后发生.您可以通过HttpSessionEvent#getSession()调用获取存储在会话中的信息,然后执行会话所需的任何安排.此外,请务必在以下位置注册会话侦听器web.xml:

<listener>
    <listener-class>FQN of your sessin listener implementation</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

如果您最终要区分失效和会话超时,可以在侦听器中使用以下行:

long now = new java.util.Date().getTime();
boolean timeout = (now - session.getLastAccessedTime()) >= ((long)session.getMaxInactiveInterval() * 1000L);
Run Code Online (Sandbox Code Playgroud)