Session超时自己完成

来源:互联网 发布:iphone电吉他软件 编辑:程序博客网 时间:2024/05/22 05:01

和手机客户端对接时,对方未把sessionid放到request-head的cookie中,这样web服务器会每次都新生成一个session。

这样会导致之前存入到session中的值获取不到。

但是对方暂不修改,只是把sessionid放到请求的url中,所以需要服务器端修改。

思路是新加一个filter,和一个map以及一个计数器。

map中的key是sessionid,value可以是一个对象,其中有一个字段是上次请求的时间,以及其他字段。

每次请求到服务端后需要根据请求过来的sessionid从map中取出来,如果没有就认为超时,或者如果有但是里面存的上次请求时间和当前时间之差大于

session的过期时间。就认为超时,否则更新请求时间为当前时间。

1、需要清除一些僵尸连接,即比如登录成功后,请求一次后,再也不请求了,这个可以根据计数器来定时清除,比如2000次的倍数后就全部检测超时的。

2、由于计数器是integer类型的,有一个最大值,所以为了防止计数器超过最大值,需要判断当前值加10000是否超过最大值,超过了就重置为0


0 0
原创粉丝点击