小编典典

GWT中的会话管理

java

我正在研究GWT-ext应用程序。在此应用程序中,我管理了客户端会话。为此,我编写以下代码:

管理会话:import com.google.gwt.user.client.Timer;

public class ClientTimers {

    private static final Timer SESSION_MAY_HAVE_EXPIRED_TIMER = new Timer() {

        @Override
        public void run() {
            // Warn the user, that the session may have expired.
            // You could then show a login dialog, etc...
        }
    };

    public static void renewSessionTimer() {

        // First cancel the previous timer
        SESSION_MAY_HAVE_EXPIRED_TIMER.cancel();

        // Schedule again in 5 minutes (maybe make that configurable?)
        // Actually, let's subtract 10 seconds from that, because our timer
        // won't be synchronized perfectly with the server's timer.
        SESSION_MAY_HAVE_EXPIRED_TIMER.schedule(5 * 60 * 1000 - 10000);
    }
}

获取用户活动:

    Ext.get("pagePanel").addListener("click", new EventCallback() {
        @Override
        public void execute(EventObject e) {
            //MessageBox.alert("On Mouse Click");
    });

    Ext.get("pagePanel").addListener("keydown", new EventCallback() {

        @Override
        public void execute(EventObject e) { //
            //MessageBox.alert("On Key Press Click");
        }
    });

这段代码可以正常工作,但是我的问题是:随着时间的推移,该代码将自动注销。对于我的代码,我希望单击或按下它即可注销。情况如下:如果用户登录并且注销时间为5分钟,则根据上述代码,用户现在没有在屏幕上进行任何活动,直到5分钟后它将自动注销。

现在我的要求是,如果用户登录后5分钟未执行任何操作,则不应自动注销任何内容。而不是在5分钟完成后注销,如果用户在6分钟内单击或按下然后应该执行注销过程。

基本上,由于计时器超过指定的时间而注销过程应该在用户活动上完成,而不是自动进行。


阅读 296

收藏
2020-11-30

共1个答案

小编典典

在计时器中,每秒增加一个变量。当用户在5分钟或6分钟后单击任何按钮时,如果要检查计数器变量,并且该变量大于6,则可以使用
Window.Location.reload();。 注销或reload()。

2020-11-30