问个关于SESSION的问题。。
做了一个项目,用浏览器登陆后把窗口关了,再打开一个新的浏览器就得重新登陆,可是之前的那个session却还没有销毁,这时候如果仍然用刚才的用户登陆的话那就重新打开了一个session。想问下这是为什么?
有什么办法可以关了浏览器重新打开的时候就是原来的那个session,不用再登陆?或者是再登陆后还是原来得那个session也可以。
------解决方案--------------------cookie
------解决方案--------------------cookie
------解决方案--------------------cookie登陆后不是原来的session了 。cookie只记录了登陆的user和password
------解决方案--------------------汗````要先搞清楚什么是session啊``这些是基础
一个人在网站上一次活动的过程。
当一个访问者来到你的网站的时候一个session就开始了,服务器为会生成一个SessionID给客户端,服务端根据SessionID来维持对应此客户的服务端的各种状态(就是Session中保存的各种值),当你关闭你的浏览器,你就丢失了这个SessionID,
而Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie是由Web服务器保存在用户浏览器上的小文件,它可以包含有关用户的信息(如身份识别号码、密码、用户在Web站点购物的方式或用户访问该站点的次数)。无论何时用户链接到服务器,Web站点都可以访问Cookie信息。
------解决方案--------------------首先 你的要求现在都用cookie来解决的
其次 session的用处lwy8802都说了
完全没有必要永久session
------解决方案--------------------楼主是不是说在web server的管理界面里Session数量一直在增加?这是正常的,你在上已经不是那个Session了。
楼主首先搞清楚Session的生命周期:
对于用户来讲:
1、关闭浏览器,刚才的Session就已经不能用了,所以对于用户来讲,关闭浏览器,Session就没了。
2、超时,在web server里可以设定Session的超时时间,比如tomcat默认是30分钟。用在不做任何操作(不提交请求),30分钟后就没有Session了。当然这个时间可以设定,如果是做实验,可以设成1分钟来观察效果
对于web Server来讲:
1、真正的释放掉Session只有超时,否则,即使用户关闭浏览器也不会释放,也要等到超时才释放,如果在超时前web server重启或关闭,server会把Session序列化到硬盘,下次启动时再读进内存,直到超时。
2、Session超时,server释放资源,也就是不再有指向Session的引用,但Session对象真正被销毁还早着呢,这个对象已经没有任何引用指向它,在系统进行垃圾回收时才真正释放这片内存空间。
3、而垃圾回收的时间就要看虚拟机的实现者是如何实现的了,有的是隔一段时间清理一下垃圾,有的是虚拟机
内存不足时才去进行垃圾回收,比如sun公司的JVM就是这样实现的。
------解决方案--------------------好帖,学习!
------解决方案--------------------如果要访问同一个session可以这样的。 登录后把JSESSIONID 传给客户端,客户端把这个值保存起来。
浏览器重启后可以这样访问原来的session, http://www.csdn.net;JSESSIONID=保存的值就可以了