Servlets 如何在shiro中弹出一个屏幕来警告会话超时结束?

Servlets 如何在shiro中弹出一个屏幕来警告会话超时结束?,servlets,shiro,Servlets,Shiro,我和shiro有一个项目,我需要在关闭非活动超时时弹出窗口警告用户会话将关闭。现在我有了shiro和Servlet容器尝试使用javascript在计时器过期时显示弹出窗口这里超时存储超时时间,现在运行计时器并在计时器过期时显示弹出窗口。演示代码如下,但你必须自定义它,它不是完整的代码 var timeout=<%= currentUser.getSession().getTimeout() %>; var starttimer=timeout-60000;

我和shiro有一个项目,我需要在关闭非活动超时时弹出窗口警告用户会话将关闭。现在我有了shiro和Servlet容器

尝试使用javascript在计时器过期时显示弹出窗口这里超时存储超时时间,现在运行计时器并在计时器过期时显示弹出窗口。演示代码如下,但你必须自定义它,它不是完整的代码

      var timeout=<%= currentUser.getSession().getTimeout() %>;
      var starttimer=timeout-60000; //+100000000;
      var timerstep=1;//In  minutes
      var alertbefore=5;//In minutes
      var logoutUrl="logout";//Url to logout
      var militimerstep=timerstep*60*1000;
      var sessionNoExpireMessage="Session will never expire!!!";

var sess_timer=window.setInterval(updateTimer,militimerstep);
    $("#timeout_timer").html(moment.duration(parseInt(starttimer,10)).humanize(true) + " remaining ");
    if(timeout<0)
    {
        clearInterval(sess_timer);
        $("#timeout").html(sessionNoExpireMessage+ " remaining ");
    }else{
        $("#timeout").html( moment.duration(parseInt(starttimer,10)).humanize() + " remaining");
    }
    function updateTimer(){
    console.log("In timer");
   // alert(timeout);
    if(timeout<0)
        {
            clearInterval(sess_timer);
            $("#timeout").html(sessionNoExpireMessage);
            return false;
        }

        starttimer = starttimer-militimerstep;
        $("#timeout").html(moment.duration(parseInt(starttimer,10)).humanize() + " remaining");
        $("#timeout_timer").html(moment.duration(parseInt(starttimer,10)).humanize(true));
        if(starttimer<=0){
            window.location.replace("${pageContext.request.contextPath}/"+logoutUrl);
            window.location("${pageContext.request.contextPath}/"+logoutUrl);
        }
        if(starttimer<alertbefore*60*1000){
            $("#session_alert").modal();
        }
    }

    function updateSessionInfo(){
         if(timeout<0)
        {

            return false;
        }
        ajaxCount--;
        resetajaxView();
        starttimer=timeout-60000;
        $("#timeout").html(moment.duration(parseInt(starttimer,10)).humanize() + " remaining");
        $("#timeout_timer").html(moment.duration(parseInt(starttimer,10)).humanize(true));
    }
var超时=;
var starttimer=timeout-60000//+100000000;
var timerstep=1//几分钟后
var=5//几分钟后
var logoutUrl=“注销”//要注销的Url
var militimerstep=timerstep*60*1000;
var sessionNoExpireMessage=“会话永远不会过期!!!”;
var sess_timer=window.setInterval(updateTimer,militimerstep);
$(“#timeout_timer”).html(time.duration(parseInt(starttimer,10)).humanize(true)+“剩余”);
如果(超时)