我创建了用它来处理用户登录的Web应用程序,并在用户从应用程序注销时更新注销时间,但是当用户直接关闭Web浏览器或系统因某些问题关闭时,我无法更新用户注销时间。 / p>
请在这种情况下给予任何possible way to update user logout time
。
答案 0 :(得分:4)
假设客户端有javascript,因为它是 webapp。
在这种情况下,您应该在浏览器关闭事件中发送请求
window.onbeforeunload = function(event) {
//send request to server .
}
答案 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://en.wikipedia.org/wiki/HTTP_cookie
在您的具体情况下,它应该是Session Cookie
会话cookie 用户的会话cookie [14](也称为内存中cookie或临时cookie)仅在用户正在阅读和浏览网站时存在于临时存储器中。如果在cookie创建时未设置到期日期或有效期间隔,则会创建会话cookie。当用户关闭浏览器时,Web浏览器通常会删除会话cookie。[15] [16]
答案 5 :(得分:0)
您可以尝试编写一些向用户发送“用户注销”消息的Javascript。应使用$.unload()
(如果您使用的是jQuery)或绑定到浏览器的本机unload
事件来触发此代码。
答案 6 :(得分:0)
在这种情况下无法准确地获取注销时间,因为这可能是由于互联网连接丢失造成的。
一些可能性:
答案 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
}
});