请问:如何避免用户重复登录? 什么样的检测程序呢?web程序没办法主动从后台遍历前台获得回应吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在客户端使用<body onunload="通知你的服务器">...</body>应该可以吧 你可以这样解决!当用户成功登陆以后,把他的信息,比如id写到servletContext中,servletContext.setAttribute(id,id);在用户每次登陆的时候,根据id读取servletContextString olready=servletContext.getAttribute(id);这个时候,如果olready不为空,则证明该用户已经登陆过了,不允许再次登陆。等用户注销的时候,把用户的信息从servletContext中移除,servletContext.remove(id);这样,该帐号就可以再次登陆了!------------------------------可以这么实现,但是实际的应用中,要比这个复杂多了,比如正常退出-------电击退出按钮或关闭网页。 异常退出-------死机或吊线。这个时候就没有触发退出事件!等等,如果需要,联系我! web可以检测自己的连接的刷新时间啊用哈西表或者用数据库存刷新时间对比客户刷新时间和服务器当前时间的差来判断用户的连接情况 gei给用户表加一个标志位,比如flag,当用户登录时设置为1,退出时为0。重登录时,当检测flag为1时,不让其登录 那不是要做两步:select ,update 登陆时生成一个类,加入hashtable然后用hashtable检查看是不是登陆了 无外乎就是解决非正常注销的方法,可以在body里出发一个js脚本 转到另一个页面然后删除该用户的session 就是点xx的解决办法 呵呵,特殊方法(我也没试过,接受检阅),就是把你的页面放到一个框架里,然后让客户直接访问这个框架也就是这样一个HTML文件:<html><body><frameset name="fstMain" cols="1,*" border="0" frameborder="0" FRAMESPACING="0" TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" > <frame name="mainFrame" src="你本来的页面" ></frame> <frame name="hiddedFrame" src="iscolse.htm"></frame></frameset></body></html>在文件iscolse.htm里<html><body onunload="通知你的服务器删除该用户的session.jsp">在浏览器被关闭时才回调用的</body><html>当然要具体应用可能还要做些改变,仅仅是个思路,不行大家不要咻我,呵呵 回复人: zeq258(近朱者赤) ( ) 信誉:100 2005-9-13 15:34:11 得分: 0 你可以这样解决!当用户成功登陆以后,把他的信息,比如id写到servletContext中,servletContext.setAttribute(id,id);在用户每次登陆的时候,根据id读取servletContextString olready=servletContext.getAttribute(id);这个时候,如果olready不为空,则证明该用户已经登陆过了,不允许再次登陆。等用户注销的时候,把用户的信息从servletContext中移除,servletContext.remove(id);这样,该帐号就可以再次登陆了!----------------------------------------------你这个方法缺点显而易见,万一人家用户浏览器异常自动关闭,那么他不是以后再也登录不上来了么 监听器里的东西为什么会在tomcat启动时加进去? JSP中如何阻止用户未登陆就直接访问URL地址 JFreeChart 1.0.11 饼图中的文字提示怎么不显示 关于<html:select>STRUTS标签从数据库取值与设置值的问题 程序有错,帮忙修改!!! 请各位帮忙! 在线求问? 谁知道jsp好的开发工具(在线给分)119 JDK1.3,tomcat下,我使用rs.first();rs.last();为什么老报错呀? tcp为什么要三次握手? 在javabean内如何得到一个文件的绝对路径 急救啊!!!在线等!!遇到个函数转换的问题!!!!
servletContext.setAttribute(id,id);在用户每次登陆的时候,根据id读取servletContext
String olready=servletContext.getAttribute(id);
这个时候,如果olready不为空,则证明该用户已经登陆过了,不允许再次登陆。等用户注销的时候,把用户的信息从servletContext中移除,
servletContext.remove(id);这样,该帐号就可以再次登陆了!
------------------------------
可以这么实现,但是实际的应用中,要比这个复杂多了,
比如正常退出-------电击退出按钮或关闭网页。
异常退出-------死机或吊线。这个时候就没有触发退出事件!等等,如果需要,联系我!
用哈西表或者用数据库存刷新时间
对比客户刷新时间和服务器当前时间的差
来判断用户的连接情况
然后用hashtable检查看是不是登陆了
也就是这样一个HTML文件:
<html><body>
<frameset name="fstMain" cols="1,*" border="0" frameborder="0" FRAMESPACING="0" TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" >
<frame name="mainFrame" src="你本来的页面" ></frame>
<frame name="hiddedFrame" src="iscolse.htm"></frame>
</frameset>
</body></html>在文件iscolse.htm里
<html><body onunload="通知你的服务器删除该用户的session.jsp">在浏览器被关闭时才回调用的
</body><html>
当然要具体应用可能还要做些改变,仅仅是个思路,不行大家不要咻我,呵呵
你可以这样解决!当用户成功登陆以后,把他的信息,比如id写到servletContext中,
servletContext.setAttribute(id,id);在用户每次登陆的时候,根据id读取servletContext
String olready=servletContext.getAttribute(id);
这个时候,如果olready不为空,则证明该用户已经登陆过了,不允许再次登陆。等用户注销的时候,把用户的信息从servletContext中移除,
servletContext.remove(id);这样,该帐号就可以再次登陆了!----------------------------------------------你这个方法缺点显而易见,万一人家用户浏览器异常自动关闭,那么他不是以后再也登录不上来了么