2012-2-28
方案一
监听session摧毁
1.继承HttpSessionListener并实现sessionDestroyed方法
2.设置session过期最大值,一般为30分钟。
优点:容易实现
缺点:精度不高
方案二
页面中使用框架或ajax不停向服务发送请求
1.页面中利用js或框架间隔性向服务器发送请求
优点:精度较高
缺点:代码容易混乱,影响并发性能
方案三
利用页面js监听关闭页面事件和给出登出按钮并限制只能单用户登录
1.在页面中使用例如onunload事件监听
2.在事件发生时对服务器发送关闭请求
3.点登出按钮也是向服务器发送登出请求
4.登录时将检查用户是否已经登录
优点:准确及时
缺点:不适合在用户多点同时登录情况
项目实践
一般会考虑不同方案的综合使用。个人比较喜欢将session监听和页面监听混合使用。
在记录时,会记录下不同情况的备注。如果是页面监听来关闭的,则记录正常登出。如果是session监听关闭的,则记录超时登出。可综合了记录不同情况的优点也避免了对性能的影响。