javaweb实现单点登录和统计实时访问量的一点思路
2016-02-02 11:30
561 查看
相关参考资料:
http://blog.csdn.net/scu_bao/article/details/7269027 http://blog.csdn.net/ranmudaofa/article/details/39623901 http://uule.iteye.com/blog/824115
单点登录:
第一步:
用户登录时以用户唯一标记(且这个标记最好设置好后永远不会改变)为key,sessionID为value存储到一个全局的map中
用户主动退出或异地登陆被强制退出时
第二步:
当有另外的客户端以相同的账号登录时,以用户唯一的标记为key从map中获取之前登录的sessionID,然后获取session 执行session.invalidate() 手动销毁session,然后将之前的帐号信息(key,value)移除,替换最新的(其实和第一步是同一步)
第三步:
定义自己的拦截器判断session是否已经失效
主要判断两种情况
1. session到达设定的过期时间限制,session中存储数据被清空 即session.getattribute() 获取值为空
2. 主动调用session.invalidate() 销毁session,即session.getattribute()会报空指针
如果session已失效则重定向到错误页面提示
PS:
关于如何根据sessionID获取session
没找到相关的根据id获取session的接口,但是我们可以通过监听sessionlistener和全局静态map实现自己的SessionContext
创建自己的sessionlistener 有sessionDestroyed,sessionCreated两个方法监听session的创建和销毁
当创建session时,触发sessionCreated已sessionid为key,session为value存到全局静态map中,当销毁session时,触发sessionDestroyed移除相应的session,
当想通过sessionid获取session就可以从这个map中获取啦!(该方法同样适用于统计实时访问量)
http://blog.csdn.net/scu_bao/article/details/7269027 http://blog.csdn.net/ranmudaofa/article/details/39623901 http://uule.iteye.com/blog/824115
单点登录:
第一步:
用户登录时以用户唯一标记(且这个标记最好设置好后永远不会改变)为key,sessionID为value存储到一个全局的map中
用户主动退出或异地登陆被强制退出时
第二步:
当有另外的客户端以相同的账号登录时,以用户唯一的标记为key从map中获取之前登录的sessionID,然后获取session 执行session.invalidate() 手动销毁session,然后将之前的帐号信息(key,value)移除,替换最新的(其实和第一步是同一步)
第三步:
定义自己的拦截器判断session是否已经失效
主要判断两种情况
1. session到达设定的过期时间限制,session中存储数据被清空 即session.getattribute() 获取值为空
2. 主动调用session.invalidate() 销毁session,即session.getattribute()会报空指针
如果session已失效则重定向到错误页面提示
PS:
关于如何根据sessionID获取session
没找到相关的根据id获取session的接口,但是我们可以通过监听sessionlistener和全局静态map实现自己的SessionContext
创建自己的sessionlistener 有sessionDestroyed,sessionCreated两个方法监听session的创建和销毁
当创建session时,触发sessionCreated已sessionid为key,session为value存到全局静态map中,当销毁session时,触发sessionDestroyed移除相应的session,
当想通过sessionid获取session就可以从这个map中获取啦!(该方法同样适用于统计实时访问量)
相关文章推荐
- 浅析Java虚拟机结构与机制
- Eclipse将引用了第三方jar包的Java,Android项目打包成jar文件的两种方法(Fat Jar)
- JAVA8 十大新特性详解
- 关于if else 和 三目运算符的效率问题(java 版)
- MyEclipse Spring 学习总结一 Spring IOC容器
- how spring resolves a request
- Java 重写(Override)与重载(Overload)
- JAVA设计模式初探之桥接模式
- Java 继承
- java中将数组、对象、Map、List转换成JSON数据
- java计算时差
- Java泛型:泛型类、泛型接口和泛型方法
- java semaphore 信号量,流控程序
- Spring入门详解
- Java学习笔记struts2篇--通配符
- Java的多态及注意事项
- 给jdk写注释系列之jdk1.6容器(12):PriorityQueue源码解析PriorityQueue是一种什么样的容器呢?看过前面的几个jdk容器分析的话,看到Queue这个单词你一定会,哦~这
- JAVA代码中注释的使用
- java设计模式之责任链模式
- SiteMesh3整合SpringMVC+FreeMarker