Java 会话过期时如何在DB中插入值

Java 会话过期时如何在DB中插入值,java,jsp,session,servlets,Java,Jsp,Session,Servlets,在从登录开始的工作中,我使用了一个身份验证jsp页面,其中我将最大非活动时间设置为60,以防止单个用户名多次登录 我在DB中创建了一个字段status,因此当用户登录时,该状态将处于活动状态,其他用户无法使用相同的用户名登录 现在我的问题是如何在会话到期时将DB中的状态设置为inactive 要更新非活动状态,我做了 login=(String)session.getAttribute("login"); PreparedStatement pt = con.prepareStatement(

在从登录开始的工作中,我使用了一个身份验证jsp页面,其中我将最大非活动时间设置为60,以防止单个用户名多次登录

我在DB中创建了一个字段
status
,因此当用户登录时,该状态将处于活动状态,其他用户无法使用相同的用户名登录

现在我的问题是如何在会话到期时将DB中的状态设置为inactive

要更新非活动状态,我做了

login=(String)session.getAttribute("login");

PreparedStatement pt = con.prepareStatement("update authentication set status='inactive' where username='"+login+"'");
因此,当会话过期时,登录名将给出null。请告诉我如何解决我的问题使用

会话刚刚被激活的通知

会话即将被钝化的通知

接收已创建会话的通知

接收会话即将失效的通知


请看。@CharleeChitsuk谢谢你的链接,我有一个疑问。要将状态更新为非活动状态,我将编写此更新身份验证集status='inactive',其中username='“+login+”'“在sessionDestroyed方法中。请告诉我如何获取登录名value@w4rumy我不明白你有没有看过mkyong的例子?看看这个答案中的链接。它们指向描述可以实现的接口的页面。例如您可以实现一个HttpSessionListener并在sessionDestroyed方法中执行您准备好的语句。@Baadshah是的,我已经通过了链接,但我不知道如何获得登录名value@jahroy请告诉我如何获取属性value@javaL使用传入的
HttpSessionEvent
参数
sessionDestroyed
获取将被销毁的会话。在那里,您还可以访问登录值。
     public void sessionDidActivate(HttpSessionEvent se) 
     public void sessionWillPassivate(HttpSessionEvent se) 
     sessionCreated(HttpSessionEvent se) 
     sessionDestroyed(HttpSessionEvent se)