session的有效范围
以邮箱登陆为例,当我已经登陆后,别人不能再用相同的用户名登陆。
这种情况其实很常见,如果用session能实现吗。
我所知道session的最大范围是application一级,
这个application是说的启动weblogic时application就启动了吗。
现在的现象是:
不关闭窗口,sessionID在任何叶面一样,
重新开个窗口,sessionID就变了。
向各位讨教解决办法。谢谢了。
------解决方案--------------------application是共用的,session是每个用户都有的,按照一般的方法就可以了,在同一个浏览器中就不能同时登陆了,如果你同时开着IE和firefox,那都可以登陆的
------解决方案--------------------http://blog.csdn.net/szhf1980/archive/2005/10/18/508345.aspx
解决防止多用户使用同以账户.
还有session的范围就是session application的范围就是application
session 不能设置为application
我记得是不可以的....如果说错了.大家别见笑
------解决方案--------------------session的id是系统自动生成的.每次都不一样.如果你关掉页面在此访问时.这次的id和上次一定不同
------解决方案--------------------不行的
从别的机器上无法读出你已登录的那个机器的session,除非用用户名在表中做关联
读不到session也就无法做是否登录的判断了
把已登录的用户放一份在application中是个解决办法
------解决方案--------------------也可以, 我觉得可以把ip地址作为判断用户惟一的标示.
当一个用户登陆.你把ip地址和用户id存入application(如果该用户id已经存在application中,再判断ip是否一致,如果一致.通过.如果不同,登陆失败)
------解决方案--------------------但是如果你此时登陆了.然后第二天你想用别的机器登陆.
可是这时候服务还没有重启过.那你就无法登陆了.
所以你还需要定时清理application中的数据.
------解决方案--------------------jsp中
application.setAttribute( "a ",new Object());
----------------------------
servlet中
ServletContext application=request.getSession().getServletContext();
application.setAttribute( "a ",new Object());
------------------------------------
------解决方案--------------------javax.servlet.ServletContext