to careless(深潭静水) : 为什么我给出了sessionid,却不能用SessCon.getSession(SessionId)得到这个session呢?
现在由于安全的原因,已经不再支持这种方法了。可以设想一下,用户的一些信息都保存在Session中,我们在开发时留个后门,用户的资料就可以到我们手中了(他的密码,信用卡号..)。本来可以通过Interface HttpSessionContext 但是现在:Deprecated. As of Java(tm) Servlet API 2.1 for security reasons, with no replacement. This interface will be removed in a future version of this API.
所谓“该批判”的意为不建议的,Java为了出于安全考虑,在后期版本中停止了对该接口的支持。
用application如何得到session对象呢?
也就是说我就是要操作session对象。
为什么我给出了sessionid,却不能用SessCon.getSession(SessionId)得到这个session呢?
但是现在:Deprecated. As of Java(tm) Servlet API 2.1 for security reasons, with no replacement. This interface will be removed in a future version of this API.
我们要解决的是两个session之间的协调问题,即:如果两个session由同一个人用户登录产生的,那么将前一个登录产生的session失效。
我们可以在登录时将用户名、登录时间、session ID等信息记入application对象中,用户注销时将信息删除。由于application的特点,对象中的信息是整个项目中的所有程序都可以访问的,所以第二次登录的时候,到查询application中查询该用户是否已登录,如果发现该用户已登录(登录尚未没超时),则将前一次登录时记录的那条application信息打上无效记号,当然,后来这次登录的信息也要写入application。下面只剩下一个问题了:即,使已经打上无效记号的application中的session ID失效! 这个问题应该很好办了吧,每次用到session的时候只要到application里检测一下自己的session是否被打上了无效记号。