java web中,在session失效之前向数据库插入一条数据,应该怎么做?如何监听session失效?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web中,在session失效之前向数据库插入一条数据,应该怎么做?如何监听session失效?相关的知识,希望对你有一定的参考价值。

要么就是 插入数据之后关闭session,要么就是使用spring声明式事务处理,也就是方法中不直接关闭session,spring会帮你关掉,这个时候你就可以插入了。别的我就不知道了 参考技术A 是Hibernate的session? 如果是在Session没有close这前,直接执行session.save("临时对象");
完了commit下Transaction就可以了。追问

不是hibernate,每个session回话都有一个有效期,一般是30分钟,如何监听失效的一瞬间向数据库插入记录

追答

哦,你说的这个session呀,你用session保存的用户登陆信息,当用户退出的时候是不是想修改下对应的数据库记录,表示用户已经不在线了?

追问

当用户退出的时候,向数据库插入一条记录,记录中有用户id,用户名等信息

追答

没做过监听session的,我也想知道。

参考技术B 楼主可以重写Session的destory()方法.。当Session实效前会调用本身的destory(),那你就可以重写它,让它想数据库插入数据追问

我试过了,session失效后才调用destroy方法

Java设置session超时(失效)的三种方式

1、 在web容器中设置(此处以tomcat为例)

在tomcat-6.0\conf\web.xml中设置,以下是tomcat 6.0中的默认配置:

  <!-- You can set the default session timeout (in minutes) for all newly   -->
  <!-- created sessions by modifying the value below.                       -->

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

Tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间。

 

2、  在工程的web.xml中设置

<session-config>
      <session-timeout>15</session-timeout>  //时间单位是分钟
</session-config>

 

3、通过Java代码设置

session.setMaxInactiveInterval(30*60);//以秒为单位


三种方式优先级:1 < 2 <3




以上是关于java web中,在session失效之前向数据库插入一条数据,应该怎么做?如何监听session失效?的主要内容,如果未能解决你的问题,请参考以下文章

java中怎么设置一个session在整个web中的时间

Java设置session超时(失效)的三种方式

Java设置session超时(失效)的三种方式

Java设置session超时(失效)的三种方式

Java设置session超时(失效)的三种方式 设置session的有效时间

数据库连接池和session