在用户表的字段里,有个字段是保存用户登陆状态的!
可是如果用户非法退出,如突然停电了,关机了,或者用户直接关闭浏览器了!
数据库里的字段却没改变!当然我想过在Listener里,当Session失效时,改变那个字段!可是如果用户关了浏览器,再次陆登,此时数据库里那个字段还没有改变,而这个用户无法登陆了,只能等session失效后,将数据库里的登陆状态改变,才能再次登陆!
求各位大虾指教,我J2EE不是很好,有些可能不懂,有代码例题更好!
小弟在此先谢过了,在些奉上一百分!!!!!
8 个解决方案
#1
你为什么要搞个数据库字段来标识用户是否已登录。这样肯定是不合理吧。
就用session就可以实现啦。
1)在登录入口(应该是唯一的入口),用户成功登录后,创建一个Session并将用户信息存入:
HttpSession session = request.getSession(); //request是HttpServletRequest的实例
User user....//是你的用户对象
session.setAttribute("LOGGED_USER",user);
2)在你需要判断的地方添加代码:
User user = null;
HttpSession session = request.getSession();
Object obj = session.getAttribute("LOGGED_USER");
if(obj == null){
// 没登录
}
else{
//已登录
user = (User)obj; //取出用户信息
}
就用session就可以实现啦。
1)在登录入口(应该是唯一的入口),用户成功登录后,创建一个Session并将用户信息存入:
HttpSession session = request.getSession(); //request是HttpServletRequest的实例
User user....//是你的用户对象
session.setAttribute("LOGGED_USER",user);
2)在你需要判断的地方添加代码:
User user = null;
HttpSession session = request.getSession();
Object obj = session.getAttribute("LOGGED_USER");
if(obj == null){
// 没登录
}
else{
//已登录
user = (User)obj; //取出用户信息
}
#2
那如果我登录了,别人也想用我的帐号密码登录,让他无法登录!怎么实现啊?
#3
你这是要实现单点登录。。。
#4
建议你搜下单点登录的资料看下。。。
#5
HTTP 是stateless 的协议,
所以你想通过HTTP协议,实时知道Client是否断线,理论上不可能。
但是你可以使用AJAX做到比较接近的效果,
可以令Client以很小的时间间隔不断向Server发HTTP请求。
这样一旦client离线,server很快就可以获悉。
所以你想通过HTTP协议,实时知道Client是否断线,理论上不可能。
但是你可以使用AJAX做到比较接近的效果,
可以令Client以很小的时间间隔不断向Server发HTTP请求。
这样一旦client离线,server很快就可以获悉。
#6
谢了,大概明白了,昨天也到网上看了一下,就是一个单点登陆,比较麻烦!
先不搞这个,csdn都没有实现单点登陆,我合必较劲,再说我又不是高手!呵呵
先不搞这个,csdn都没有实现单点登陆,我合必较劲,再说我又不是高手!呵呵
#7
#8
真是对不住啊,刚结贴,你就回复了!
#1
你为什么要搞个数据库字段来标识用户是否已登录。这样肯定是不合理吧。
就用session就可以实现啦。
1)在登录入口(应该是唯一的入口),用户成功登录后,创建一个Session并将用户信息存入:
HttpSession session = request.getSession(); //request是HttpServletRequest的实例
User user....//是你的用户对象
session.setAttribute("LOGGED_USER",user);
2)在你需要判断的地方添加代码:
User user = null;
HttpSession session = request.getSession();
Object obj = session.getAttribute("LOGGED_USER");
if(obj == null){
// 没登录
}
else{
//已登录
user = (User)obj; //取出用户信息
}
就用session就可以实现啦。
1)在登录入口(应该是唯一的入口),用户成功登录后,创建一个Session并将用户信息存入:
HttpSession session = request.getSession(); //request是HttpServletRequest的实例
User user....//是你的用户对象
session.setAttribute("LOGGED_USER",user);
2)在你需要判断的地方添加代码:
User user = null;
HttpSession session = request.getSession();
Object obj = session.getAttribute("LOGGED_USER");
if(obj == null){
// 没登录
}
else{
//已登录
user = (User)obj; //取出用户信息
}
#2
那如果我登录了,别人也想用我的帐号密码登录,让他无法登录!怎么实现啊?
#3
你这是要实现单点登录。。。
#4
建议你搜下单点登录的资料看下。。。
#5
HTTP 是stateless 的协议,
所以你想通过HTTP协议,实时知道Client是否断线,理论上不可能。
但是你可以使用AJAX做到比较接近的效果,
可以令Client以很小的时间间隔不断向Server发HTTP请求。
这样一旦client离线,server很快就可以获悉。
所以你想通过HTTP协议,实时知道Client是否断线,理论上不可能。
但是你可以使用AJAX做到比较接近的效果,
可以令Client以很小的时间间隔不断向Server发HTTP请求。
这样一旦client离线,server很快就可以获悉。
#6
谢了,大概明白了,昨天也到网上看了一下,就是一个单点登陆,比较麻烦!
先不搞这个,csdn都没有实现单点登陆,我合必较劲,再说我又不是高手!呵呵
先不搞这个,csdn都没有实现单点登陆,我合必较劲,再说我又不是高手!呵呵
#7
#8
真是对不住啊,刚结贴,你就回复了!