关于session监听的问题

时间:2021-11-27 22:37:54
在做一个系统,因为用户可能会一直挂着系统,所以要做一个session监听,当session超时失效时,需要将用户对象重新封装到这个session中
session监听我光知道有两种方法可以做到
一个是HttpSessionListener,但这种方法监听的是所有的session,我如果在sessionDestroyed方法中判断该失效的session是我需要监听的用户session?
另一个是HttpSessionBindingListener,这种方法需要将这个监听器通过session.setAttribute("userSessionListener",new SessionListener(user))绑定到一个session中,而且此方法监听的是userSessionListener这个session,可我想监听的是封装user对象的session,这可如何是好?
另外就是cookies了,需要将用户对象序列化以及反序列化,难道每次取的时候都要反序列化一下cookies?那企不是很麻烦?
大家有没有好的办法让我实现监听用户对象session的方法?

6 个解决方案

#1


up
up
up
up

#2


写一个定时器,每隔一段时间去侦听用户,差不多就是心跳的意思。

#3


其实很简单,你写一个线程,每隔一定时间,把你要的session取出来,看看它什么状况,然后做相关操作,就可以,用监听很麻烦。说到底监听的本质其实就是一个线程,它不断去监看某个对象怎么样了。道理都是一样的。线程会写吧,不会的话,就不怪你听不懂了

#4


就第一个呀,只有失效的session才会触发那个sessionDestroyed方法,到底是那个session,根据session里的标识符判断就可以了。标识符可以是session id,也可以是你自己放在session的User对象。

#5


楼上说得很正确

#6


谢谢楼上的好心人们。。问题已经解决。。用的4楼的方法,3楼关于线程的问题真没接触过。不过也谢谢你。。开始散分喽。。。

#1


up
up
up
up

#2


写一个定时器,每隔一段时间去侦听用户,差不多就是心跳的意思。

#3


其实很简单,你写一个线程,每隔一定时间,把你要的session取出来,看看它什么状况,然后做相关操作,就可以,用监听很麻烦。说到底监听的本质其实就是一个线程,它不断去监看某个对象怎么样了。道理都是一样的。线程会写吧,不会的话,就不怪你听不懂了

#4


就第一个呀,只有失效的session才会触发那个sessionDestroyed方法,到底是那个session,根据session里的标识符判断就可以了。标识符可以是session id,也可以是你自己放在session的User对象。

#5


楼上说得很正确

#6


谢谢楼上的好心人们。。问题已经解决。。用的4楼的方法,3楼关于线程的问题真没接触过。不过也谢谢你。。开始散分喽。。。