求助,java网站用户登陆后持久在线的思路。
系统架构
tomcat+struts2+spring
现在我是把sessionout 的时间设为4个小时。是可以满足我的需要了。
但我现在想,就是把tomcat重启以后用户也不会掉线,应该怎么样设置?
我自己的思路是
1:建立一个mysql表,表名online,
字段 session 和 lastTime, username
session存储加密后的sessionID
lastTime存储用户最后动作的时间戳
username存储用户名
2:用户登陆成功后获取sessionID然后和一个固定的字符串连接在一起加密形成一个32位的字符串,然后插入online表
3:在最主要的页面,用户一访问这几个页面就更改对应的online表的lastTime值。
4:每隔15分钟执行一次计划任务,把lsatTime<now()-60*60*4 把4个小时内没有动作的用户踢掉
5: 在用户登陆页面,在用户登陆之前,检测online表有没有对应的数据,有对应的数据,则直接让用户进入管理页面
不知道我这样的思路可不可以。有什么坏处没有
PS一个问题
一个关于spring相关的问题
先说一下我的现在的处理流程
Java code
class 动物 {
public String name;
public void doAction{}
}
class deposit{
动物 a = new 动物()
public void doAction{
String name = "老虎";
a.setName = name;
a.doAction();
}
}
类动物是单例模式,现在我就想, 假如我现在有很多动物类型,如老虎, 猴子,我想同时都用单例模式实例化 动物类应该怎么做?
------解决方案--------------------
tomcat重新启动后,你的session就没有了,.....
5: 在用户登陆页面,在用户登陆之前,检测online表有没有对应的数据,有对应的数据,则直接让用户进入管理页面
如果你的tomcat重新启动了,现在有个用户点登录页面了,你根据什么来判断online表里有没有?仅仅是用户名?那么只要知道用户名,在别人登录系统后的4小时内,任何人登录都不需要密码了,直接进入了?你觉得安全么?
------解决方案--------------------
abstract class 动物{
public abstract void getTeam();
}
class 老虎 extends 动物{
public void deposit(){
System.out.println("我的老虎");
}
}
//测试类
public class Test1{
public static void main(String args[]){
//多态:用父类实例化子类
动物 xxx=new 老虎();
dog.deposit();
}
}
这样试试