gpt4 book ai didi

java - 如何在关闭浏览器时从数据库中删除数据

转载 作者:搜寻专家 更新时间:2023-11-01 01:45:25 24 4
gpt4 key购买 nike

当用户登录到我的网络应用程序时,我会创建一个 session :

session.setAttribute("SessionNumber","100");

他的用户名被添加到名为 ONLINE_USERS 的表中。其他在线用户将能够看到他,他们看到所有在线用户

当用户点击注销按钮时,我从表中删除该行,然后使用以下方法删除 session :

session.invalidate();

但是假设用户存在浏览器,他的 session 将消失,但该行将作为在线用户保留在数据库中,如何避免这种情况?

我在 Netbeans 上使用 JSP-Servlet。

最佳答案

您可以启用自定义 HttpSessionListener 以在 session 失效时删除表行。

public class YourHttpSessionListener implements HttpSessionListener {       
public void sessionCreated(HttpSessionEvent event) {
//put row in the database
}

public void sessionDestroyed(HttpSessionEvent event) {
//delete the row from database
}
}

在您的 web.xml 中声明监听器:

<listener>
<listener-class>YourHttpSessionListener</listener-class>
</listener>

请注意,在用户退出浏览器和他的 session 在服务器上过期之间会有一段延迟。但是 session 过期时间是可配置的。您应该找到一个合适的过期超时时间:不要太长,这样您就不会为在线用户显示过多的离线用户,但也不要太短,以免让连接的用户有空闲时间。

我认为对于使用基本 servletjsp 技术开发的聊天应用程序来说,这是一个很好的权衡。

关于java - 如何在关闭浏览器时从数据库中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12231340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com