一尘不染

通知用户有关Java EE中的会话超时的信息

jsp

我的要求是通过弹出窗口通知用户,如果用户没有在网页上执行任何活动,则用户会话将在x秒后超时。

除此之外,还需要在弹出窗口中动态减少x秒的值。

我使用的环境是Java EE。


阅读 225

收藏
2020-06-08

共1个答案

一尘不染

利用HttpSession#getMaxInactiveInterval()setTimeout()。除非您想将每个客户端活动的超时(轮询)都推迟,否则无需为此目的使用Ajax。

基本示例:

<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秒钟内使用另一个来动态更改文本。

请注意,此脚本必须由提供,JspServlet以使EL正常工作。因此,您需要将脚本放入<head>JSP页面的HTML
中,或者如果您确实希望将所有JS放在单独的*.js文件中,则还需要让它JspServlet处理任何*.js请求。

2020-06-08