创建一个活动检查器,检查每一分钟是否发生了任何用户活动(mouseclick,keypress)并对服务器端执行心跳以在用户处于活动状态时保持会话处于活动状态,并在用户未处于活动状态时不执行任何操作.如果30分钟内没有活动(或者在服务器端设置了默认会话超时),则执行重定向.
这是一个启动示例,jQuery很少帮助绑定click和keypress事件并触发ajax请求.
<script src="http://code.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>
Run Code Online (Sandbox Code Playgroud)
创建一个Servlet侦听/heartbeat并基本上只执行以下操作:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
request.getSession();
}
Run Code Online (Sandbox Code Playgroud)
让会话保持活力