我的要求是通过弹出窗口通知用户,如果用户没有在网页上执行任何活动,则用户会话将在x秒后超时。
除此之外,还需要在弹出窗口中动态减少x秒的值。
我使用的环境是Java EE。
利用HttpSession#getMaxInactiveInterval()和setTimeout()。除非您想将每个客户端活动的超时(轮询)都推迟,否则无需为此目的使用Ajax。
HttpSession#getMaxInactiveInterval()
setTimeout()
基本示例:
<script> var secondsBeforeExpire = ${pageContext.session.maxInactiveInterval}; var timeToDecide = 15; // Give client 15 seconds to choose. setTimeout(function() { alert('Your session is about to timeout in ' + timeToDecide + ' seconds!') }, (secondsBeforeExpire - timeToDecide) * 1000); </script>
要神奇地减少消息中的时间,alert()您需要使用div覆盖而不是基本的覆盖,其中您可以通过HTML DOM树控制内容,并setTimeout()在1秒钟内使用另一个来动态更改文本。
alert()
请注意,此脚本必须由提供,JspServlet以使EL正常工作。因此,您需要将脚本放入<head>JSP页面的HTML 中,或者如果您确实希望将所有JS放在单独的*.js文件中,则还需要让它JspServlet处理任何*.js请求。
JspServlet
<head>
*.js