class session{
private String id;
private HashMap map;}大概类似这样吧 我想
private String id;
private HashMap map;}大概类似这样吧 我想
解决方案 »
- Head First 设计模式组合模式中的一个问题
- javaeye怎么发带图片的博文?
- 请教有人做过公安方面的JAVA项目没? 有的话请帮忙介绍下
- 框架的好出,如ssh?
- 何时使用hibernate关联表操作
- struts入门问题
- 请高手帮我看看如何在servlet中实现分页--源码在里面,不知错误在哪?---十分感谢!!!
- PKIX:unable to find valid certification path to requested target
- 关于Eclipse运行时的问题?
- JBOSS中数据库连接池抛出的异常问题?
- 如何每隔一段时间产生一个操作
- 请问Delphi数据库编程和.NET的C#网络编程 对以后java学习和应用哪个的帮助大请指教谢谢
一个key->一个value
还有一个唯一的sessionID
1,首次访问时,服务器开辟一块内存,并且把这块内存生成一个唯一标识送给客户端。
2,浏览器保存这个唯一标识(其实就是HTTP头部的sessionID)
3,再次请求时,浏览器检查唯一标识,如果有就送到服务器端。
4,服务器端根据这个标识,就可以使用刚才保存再内存中的变量值了。采用这种方式可以减少大量的数据在网络上传送,同时使得无状态的http协议变得有状态了。由于sessionID需要保留在客户端,并且在网络间传输,所以在某些情况下,客户端禁止了cookie,就会出现无法获得session得情况,因为每次请求都没有返回那个唯一标识了。
这样就采用了url重写得机制来实现session。其实就是把唯一标识写在url后面,例如:
http://www.some.com/getbook.jsp?sessionid=A3481198BCD888939287DADFCE7A
这样得url。这种实现方式比较麻烦,因为所有得url都要加一个这种东西。但是好处是及时客户端禁止了cookie也可以保持session。
現在就有一點不明白的地方,假如上次我用test帳號登陸服務器,系統產生一個sessionId為0001的session,然後把這個sessionId和用戶對應起來存入temp表,然後過了幾天,或許很長時間,我在用這個帳號登陸的時候,系統是重新為這個帳號產生一個sessionID,還是會去找以前已經存在的那個sessionID??我問過開發這個系統的軟件廠商,他們的意思是會找以前已經存在的那個sessionID,然後根據這個sessionID去清除這個用戶上一次再temp表中的紀錄
但是我也有些程序驗證過,好像每次產生的sessionID都會不一樣
鬱悶了各位大哥大姐,幫我解釋以下吧
因为SessionID是跟客户端的机器关联的,而你的是要跟登录的帐号关联。而不同的帐号可以在不同的机器上登录。所以你应该在数据库中设置一张表,里面保存了所有的帐号登录后产生的temp的信息,帐号正常退出就清空这些信息,如果没有正常退出就保留这临时信息,下次用和登录的时候,先查找有没有临时信息,有就说明为正常退出或者同时在多台机器登录了。这样你把以前的temp信息删除。其实也能够起到防止一个帐号在多个机器登录的效果,是吧。