如何在用户关闭Web浏览器而不从应用程序注销时获取用户注销时间

时间:2013-07-09 12:02:47

标签: java logout

我创建了用它来处理用户登录的Web应用程序,并在用户从应用程序注销时更新注销时间,但是当用户直接关闭Web浏览器或系统因某些问题关闭时,我无法更新用户注销时间。 / p>

请在这种情况下给予任何possible way to update user logout time

8 个答案:

答案 0 :(得分:4)

假设客户端有javascript,因为它是 webapp。

在这种情况下,您应该在浏览器关闭事件中发送请求

window.onbeforeunload = function(event) {

   //send  request to server .

}

喜欢阅读:want to detect browser close event?

答案 1 :(得分:3)

以下步骤可帮助您更新注销时间。

1.保持更新每个请求的会话中的时间戳变量。
2.在会话超时期间获取变量值(在用户最后访问时保留)并在注销记录中更新。

这可以帮助您不依赖浏览器发送注销请求。

答案 2 :(得分:2)

您可以创建一个实现HttpSessionListener和注释@WebListener()的类,如下所示:

@WebListener()
public class MyListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {

    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
         Date lougOutDate=new java.util.Date();
    }
}

sessionDestroyed方法中检索断开连接的日期

答案 3 :(得分:2)

尝试使用此代码实现

        window.onbeforeunload = function(event) {
            var isOK = confirm("Are you sure to Leave this Page?");
            if(isOK)
            {
                // try ajax for update your table   
            }

        }

答案 4 :(得分:1)

为什么不使用TimeOut?

有几种解决方案:

  • 超时
  • 实施HTTP COOKIE。请查看以下链接

http://en.wikipedia.org/wiki/HTTP_cookie

在您的具体情况下,它应该是Session Cookie

会话cookie 用户的会话cookie [14](也称为内存中cookie或临时cookie)仅在用户正在阅读和浏览网站时存在于临时存储器中。如果在cookie创建时未设置到期日期或有效期间隔,则会创建会话cookie。当用户关闭浏览器时,Web浏览器通常会删除会话cookie。[15] [16]

  • 按照建议用Javascript做的事情 希望它有所帮助:)

答案 5 :(得分:0)

您可以尝试编写一些向用户发送“用户注销”消息的Javascript。应使用$.unload()(如果您使用的是jQuery)或绑定到浏览器的本机unload事件来触发此代码。

答案 6 :(得分:0)

在这种情况下无法准确地获取注销时间,因为这可能是由于互联网连接丢失造成的。

一些可能性:

  1. 发送文件卸载的ajax请求以通知您的服务器(根据@Baadshah和@mthmulders的建议)
  2. 在服务器上添加会话超时侦听器以设置会话超时时的注销时间 - 这样即使ajax没有到达服务器,您也会知道用户在最后几分钟内已注销(取决于在会议期间)

答案 7 :(得分:-1)

在页面上使用事件beforeunload with jquery。

只要用户因任何原因离开您的网页,就会触发beforeunload事件。

例如,如果用户提交表单,单击链接,关闭窗口(或选项卡)或使用地址栏,搜索框或书签转到新页面,则会触发它。

您可以使用以下代码排除表单提交和超链接(其他框架除外):

var inFormOrLink = false;
        $(document).on('click','a', function() { inFormOrLink = true; });
        $(document).bind('submit','form', function() { inFormOrLink = true; });

        $(window).on('beforeunload',document, function(eventObject) {
            var returnValue = undefined;
            if (inFormOrLink == false) {
                //do your action

            }

        }); 

编辑:在此处找到答案:How to capture the browser window close event?