社区
Web 开发
帖子详情
用户登陆问题:同一个用户帐号,在同一时间内只能一个人使用。在线等了。
xiaohua223
2005-02-24 05:44:51
水平有限呀,高手给个详解。
...全文
608
22
打赏
收藏
用户登陆问题:同一个用户帐号,在同一时间内只能一个人使用。在线等了。
水平有限呀,高手给个详解。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lurrix
2005-02-25
打赏
举报
回复
这里的讨论很热烈,不过首先得澄清,这个问题不叫单点登陆,呵呵,单点登陆指的是sso,感兴趣的朋友可以看看josso。
tly同学的回复只能说找到问题的一种解决办法,但实现的代码是有问题的:
1。多线程安全;
2。sessionCreated访法没有做任何实现的工作。
starsoulxp
2005-02-25
打赏
举报
回复
单点登陆,也可以根据网卡物理地址
mask85
2005-02-25
打赏
举报
回复
我想把Bean做成单例模式不就可以了?
dadunqingwa
2005-02-25
打赏
举报
回复
学习中,参照转的哪个帖子配置下吧……
guestroad
2005-02-25
打赏
举报
回复
up
congbailing_914
2005-02-25
打赏
举报
回复
楼上的haohaohaohao1 哈哈,在这又见到你了!
我也血洗一下,顶!!!!
taoxuwen
2005-02-25
打赏
举报
回复
学习 up
bp69
2005-02-25
打赏
举报
回复
用application简单
luoyefeng
2005-02-25
打赏
举报
回复
如果要管理费正常退出,可以用一个全局bean进行轮询,在设定的时间内如果没有获得用户的请求,就自动退出
shloshlo
2005-02-25
打赏
举报
回复
gz
tlg
2005-02-24
打赏
举报
回复
说明:这是转帖
tlg
2005-02-24
打赏
举报
回复
发现对于登录问题的解决都说用session监听,但是没有人写出示例代码,今天写了一个,希望对大家有所帮助.
解决同名用户登录的问题,类似QQ,即同名用户第二次登录,第一次登录的用户就掉线.
SessionListener.java监听session的类,部署于/App/WEB-INF/classes/com/test下(其中App为你的应用程序目录)
package com.test;
import javax.servlet.http.*;
import java.util.*;
public class SessionListener implements HttpSessionListener{
private static HashMap hUserName = new HashMap();//保存sessionID和username的映射
/**以下是实现HttpSessionListener中的方法**/
public void sessionCreated(HttpSessionEvent se){
}
public void sessionDestroyed(HttpSessionEvent se){
hUserName.remove( se.getSession().getId() );
}
/*
* isAlreadyEnter-用于判断用户是否已经登录以及相应的处理方法
* @param sUserName String-登录的用户名称
* @return boolean-该用户是否已经登录过的标志
*/
public static boolean isAlreadyEnter(HttpSession session,String sUserName){
boolean flag = false;
if(hUserName.containsValue(sUserName)){//如果该用户已经登录过,则使上次登录的用户掉线(依据使用户名是否在hUserName中)
flag = true;
//遍历原来的hUserName,删除原用户名对应的sessionID(即删除原来的sessionID和username)
Iterator iter = hUserName.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry)iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
if( ( (String)val ).equals(sUserName) ){
hUserName.remove(key);
}
}
hUserName.put( session.getId(),sUserName );//添加现在的sessionID和username
System.out.println("hUserName = " + hUserName);
}
else{//如果该用户没登录过,直接添加现在的sessionID和username
flag = false;
hUserName.put( session.getId(),sUserName );
System.out.println("hUserName = " + hUserName);
}
return flag;
}
/*
* isOnline-用于判断用户是否在线
* @param session HttpSession-登录的用户名称
* @return boolean-该用户是否在线的标志
*/
public static boolean isOnline(HttpSession session){
boolean flag = true;
if( hUserName.containsKey( session.getId() ) ){
flag = true;
}
else{
flag = false;
}
return flag;
}
}
web.xml部署于/App/WEB-INF下
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">
<web-app>
<listener>
<listener-class>
com.inspirer.dbmp.SessionListener
</listener-class>
</listener>
</web-app>
应用部分
1.在你的登录验证时,调用SessionListener.isAlreadyEnter(session,"admin")
既可以判断该用户名的用户是否登录过,又可以使上次登录的用户掉线
2.其他页面调用SessionListener.isOnline(session),可以判断该用户是否在线.
写的应该比较详细了,希望对大家有所帮助.希望大家能提提修改的意见,认为可以的朋友帮忙UP一个!!
最后祝大家春节快乐,合家团圆
xiaohua223
2005-02-24
打赏
举报
回复
登录了的做个标志就可以了,退出了怎么去除标志。
kaymo
2005-02-24
打赏
举报
回复
登录了的做个标志就可以了
或写个共通方法
knight_yl
2005-02-24
打赏
举报
回复
jFresH_MaN的思想不错,具体的还要自己做.
开始不要这么多了
Building
2005-02-24
打赏
举报
回复
jFresH_MaN(The answer is ......),依照你的方法,如果用户非正常退出呢?比如直接关闭浏览器
wjr1982et
2005-02-24
打赏
举报
回复
楼上的高手我要修改的是 session.setAttribute("isLog",new String("0"));这里吗?
修改成:application.setAttribute("id","login");吗?
--------------------------------------------------------------------------------
session也是可以的,成功登陆,isLog为1。当其他用户也登陆这个ID时,就可以判断isLog
为1时,就不允许他登陆
xiaohua223
2005-02-24
打赏
举报
回复
我是笨鸟,能不能讲慢点。
wubai250
2005-02-24
打赏
举报
回复
jFresH_MaN(The answer is ......)的想法不错,还简单
xiaohua223
2005-02-24
打赏
举报
回复
我是初学:这个登陆的代码:
loginto.jsp:
<%
//获得请求的参数。
String id=request.getParameter("id");
String psw=request.getParameter("password");
//连接数据库
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection con=java.sql.DriverManager.getConnection("jdbc:mysql://127.0.0.1/gold?useUnicode=true&characterEncoding=GB2312","root","123456");
Statement statement=con.createStatement();
ResultSet result=statement.executeQuery("select *from id where userId='"+id+"' and password='"+psw+"'");
session.setAttribute("isLog",new String("0"));
if(result.next())
{
session.setAttribute("isLog",new String("1"));
response.sendRedirect("denglu.jsp");
result.close();
statement.close();
con.close();
}
else
{
//session.setAttribute("isLog",new String("0"));
response.sendRedirect("error.html");//账号或密码错误,转入错误页面
result.close();
statement.close();
con.close();
}
%>
楼上的高手我要修改的是 session.setAttribute("isLog",new String("0"));这里吗?
修改成:application.setAttribute("id","login");吗?
加载更多回复(2)
同一时间
同一
帐号
只能
登陆
在一台电脑
同一时间
同一
帐号
只能
登陆
在一台电脑上的
问题
终于解决了 后
登陆
的
用户
会把先
登陆
的
用户
踢下线 具体实现:sessionCheck: package test; import javax.servlet.ServletContext; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpSe
ASP.NET防止同
一个
帐号
多个
用户
同时
登陆
的解决方法
该解决方案是在ASP.NET下解决的,创建
一个
用户
登录表,记录下每
一个
用户
登录系统的信息,其表结构如下:字段类型说明User_idVarchar(22)
用户
ID号User_addressVarchar(15)
用户
访问系统时的IP地址Last_datetimeDatetime
用户
最后访问系统的时间Login_statusInt
用户
在线
状态 0:离线 1:
在线
一.在创建
用户
的时候,向登录表中自动添加
同一时间
同一
帐号
只能
登陆
一
同一时间
同一
帐号
只能
登陆
在一台电脑上的
问题
终于解决了后
登陆
的
用户
会把先
登陆
的
用户
踢下线具体实现:sessionCheck:package test;import javax.servlet.ServletContext;import javax.servlet.http.HttpServlet;import javax
一个
账号
同一时间
只能
一个
人
登陆
对于
一个
帐号
在
同一时间
只能
一个
人登录,可以通过下面的方法实现: 1 .在
用户
登录时,把
用户
添加到
一个
ArrayList中 2 .再次登录时查看ArrayList中有没有该
用户
,如果ArrayList中已经存在该
用户
,则阻止其登录 3 .当
用户
退出时,需要从该ArrayList中删除该
用户
,这又分为三种情况 ①
使用
注销按钮正常退出 ② 点击浏览器关闭按钮或者用Alt+F4退...
java实现qq一人登录_Java Web 实现QQ登录功能
一个
帐号
同一时间
只能
一个
人登录
对于
一个
帐号
在
同一时间
只能
一个
人登录,可以通过下面的方法实现:1 .在
用户
登录时,把
用户
添加到
一个
ArrayList中2 .再次登录时查看ArrayList中有没有该
用户
,如果ArrayList中已经存在该
用户
,则阻止其登录3 .当
用户
退出时,需要从该ArrayList中删除该
用户
,这又分为三种情况①
使用
注销按钮正常退出② 点击浏览器关闭按钮或者用Alt+F4退出,可以用JavaScript捕捉...
Web 开发
81,111
社区成员
341,723
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章