当前位置: 代码迷 >> Java Web开发 >> session的有效范围解决思路
  详细解决方案

session的有效范围解决思路

热度:29   发布时间:2016-04-17 14:27:25.0
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
  相关解决方案