创建一个活动检查器,该检查器每分钟检查是否发生了任何用户活动(mouseclick,按键),并向服务器端执行心跳,以在用户活动时保持会话活动,而在用户不活动时不执行任何操作。如果30分钟没有任何活动(或在服务器端设置了任何默认会话超时),请执行重定向。
这是一个启动示例,jQuery几乎没有帮助来绑定click和keypress事件并触发ajax请求。
<script src="http://pre.jquery.com/jquery-latest.min.js"></script><script> $(document).ready(function() { $.active = false; $('body').bind('click keypress', function() { $.active = true; }); checkActivity(1800000, 60000, 0); // timeout = 30 minutes, interval = 1 minute. }); function checkActivity(timeout, interval, elapsed) { if ($.active) { elapsed = 0; $.active = false; $.get('heartbeat'); } if (elapsed < timeout) { elapsed += interval; setTimeout(function() { checkActivity(timeout, interval, elapsed); }, interval); } else { window.location = 'http://example.com/expired'; // Redirect to "session expired" page. } }</script>创建一个
Servlet监听
/heartbeat并基本上执行以下操作的:
@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) { request.getSession();}使会话保持活动状态。
当您将已登录的用户存储在会话中时,只要会话过期,它将“自动”注销。因此,您无需手动注销用户。



