会话到期后自动注销

我们的应用程序在30分钟后注销并被重定向到登录页面,我在web.xml中指定会话超时并使用requestProcessor进行重定向。我想向用户显示一条消息,说明会话到期后会话已过期,如何我可以那样做。自动注销? 我想提示页面上的错误消息“会话超时,请再次登录”。 然后,我怎么能检测到会话超时? 任何方法会自动触发吗?

创建一个活动检查器,检查每一分钟是否发生了任何用户活动(mouseclick,keypress),并向服务器端执行心跳以在用户处于活动状态时保持会话处于活动状态,并在用户未处于活动状态时不执行任何操作。 如果30分钟内没有活动(或者在服务器端设置了默认会话超时),则执行重定向。

这是一个启动示例,几乎没有jQuery的帮助来绑定click和keypress事件并触发ajax请求。

  

创建一个侦听/heartbeatServlet ,基本上只做以下几点:

 @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { request.getSession(); } 

使会话保持活力

将登录用户存储在会话中时,只要会话过期,它就会“自动”注销。 因此您无需手动注销用户。

创建一个实现HttpSessionListener的Listener类,并在web.xml中定义它

这会在任何会话被销毁时通知您。 使用sessionDestroyed()方法。

在这里查看完整示例:

http://www.mkyong.com/servlet/a-simple-httpsessionlistener-example-active-sessions-counter/

如果您正在使用servlet会话,则可以使用isNew()方法检查jsp / servlet返回的会话是否是新的。 如果是,则用户的会话已过期,您可以显示相关消息。

在JSP中包含一个javascript实用程序函数,每隔31分钟ping一次服务器。 上面提到的实用函数应该在内部使用setTimeout()JS函数。

 setTimeout ( "checkServerSession()", /* intervalInMilliSeconds */ 31000); 

注意

checkServerSession()

是一个常规的JS函数,可以触发HTTP请求。 如果请求成功,则会话存在,否则向用户显示提示。