这个问题好象很简单嘛,还是我水平太差?
关闭浏览器=session死亡

解决方案 »

  1.   

    session死亡 发生在以下情况:
    1.session的持有者(即客户端浏览器)在最大无活动等待时间(MaxInactiveInterval)内无任何响应或请求
    2.session被调用invalidate()方法强制弊了
    3.jsp服务器重起或发生中断(此时应该是所有session都当了)用户关闭浏览器后标志着
    a.session将不再发送请求到服务器
    b.该session将不会有人调用他的invalidate()方法
    所以,此时只能等待session自己超时死亡,如果设置了该session的MaxInactiveInterval为-1,那么这个session只有在第3种情况下才能死了.
      

  2.   

    ASP、JSP 中session可以放在服务器端,也可以放在客户端。
      

  3.   

    致楼上的一封感人肺腑的信:
    session不可以放在客户端,放在客户端的叫cookie,
    session是在内存里的,即时的东西,如果这个能放在客户端,那web的安全简直就是纸了
      

  4.   

    这个问题在一篇文章里好像有过讨论了你是从那里来的吗?我也参加讨论过!
    ----------
    回复人: zhouziqiang(zhouziqiang) ( ) 信誉:100 
    的session的存活周期就是浏览器存活周期啊,浏览器关闭了,session自然也就没了
    --------------回复人: gmmilk(牛奶哥) ( ) 信誉:100 
    浏览器关闭session就失效吗?理论上好像我也是这么看到的,可是有一次亲身经历(我的页面上设置失效是默认的),关闭浏览器后重新打开页面居然原来登陆的用户还在,session居然没有失效,当然我不是通过“安全注销”来关闭session的!所以“关闭浏览器==session失效”表示怀疑
    --------------回复人: zhugegod(诸葛) ( ) 信誉:100 
    关闭浏览器和session失效没有任何关系,session有一个存活时间,在tomcat中默认是30分钟,这个值可以在jsp页面中通过调用内置对象session的一个方法改变(具体方法名忘了,反正是意义很明显的一个方法名)。即使你浏览器一直开着,如果在30分钟内没有发出任何请求,那你原来存在服务器上的session域内的东西就全没有了,你再次访问的时候,服务器会新建一个session的。
    -------------回复人: gmmilk(牛奶哥) ( ) 信誉:100 
    re:诸葛
    session的失效和关闭浏览器没有任何关系?那是不是每次关闭浏览器之前都要有session失效语句?那万一用户不是正常关闭浏览器而是机器突然重启呢?你的意思是不是这样的话你在网吧里输入某些重要的隐私然后突然关机你就走了那接下来上网的那个只要在默认时间内(比如30分中)内上了这台机器就可以获得前面那个人都某些资料?
    非常关注session
    ------------回复人: nighthawk(梦游中……) ( ) 信誉:76 
    关闭浏览器就把session给关了?这个是哪里的结论?完全同意诸葛的观点。
    关闭浏览器时session是还存在的。
    你再次访问的时候,服务器会新建一个session的。
    可以通过session的ID来判断是不是新的session。
    你提的问题本身就是有问题的。可以肯定的告诉你:关闭浏览器后session是没有关的。
    gmmilk(牛奶哥):你没有看到最后一句话:
    你再次访问的时候,服务器会新建一个session的。
    ------------回复人: Jane000(编程程) ( ) 信誉:100 
    to: zhugegod(诸葛) 
        你说的是session.getMaxInactiveInterval()吧. 
    to:nighthawk(梦游中……) 
        正如gmmilk(牛奶哥)  所说的
        浏览器关闭session就失效吗?理论上好像我也是这么看到的,可是有一次亲身经历(我的页面上设置失效是默认的),关闭浏览器后重新打开页面居然原来登陆的用户还在,session居然没有失效,当然我不是通过“安全注销”来关闭session的     这是什么原因呢.如果不注销直接关浏览器.
         1.为什么session还存在客户端呢?说明一些信息存在了cookie中,打开浏览器session从中取得?
         2.服务器又新建一个session和原来的ID相同,然后呢,删掉以前的?
      

  5.   

    to hykwolf(Yankang Hu),
    session 最初是基于 cookie 的,后来发展增加了 url rewriting sessioin, database session.
    google 的关于语言选择 session 是放在客户端的。
    很多网站 session 都是放在客户端的。CSDN 用户登录信息可以放在客户端一周,也是用客户端cookie实现的。
    什么“感人肺腑”??太激动了吧?
      

  6.   

    我觉得session是即时的,放在服务器端的才是session;至于在客户端,那些信息是异步的存放在cookie中的,即便有某些来自session中的信息,我觉得应该还是叫cookie!
    赶紧去查一下,我无知了……
      

  7.   

    要是页面跳转了,session是死的还是活的?
      

  8.   

    页面跳转,Session还是保持的。关闭浏览器Session并没有消失,只是你在客户端访问不到他了,直到超时后才会在服务端消失。新开一个浏览器,会产生一个新的Session。
      

  9.   

    to jacklondon(jacklondon)session确实也有放在客户端的,比如sessionid,
    但是session真正的数据,比如你设置了一个attribute叫name,value是china,这些session实际的数据是在服务器的内存里的,csdn等那是利用了cookie的功能,吧你的登录信息放在客户端的cookie中,当你访问csdn的时候是用的cookie中的用户信息登陆的,这个不是session,叫cookie.
    session早已自成体系了
    session不能放在客户端,只能保存某些关联信息在客户端,比如sessionid.
      

  10.   

    3.jsp服务器重起或发生中断(此时应该是所有session都当了)
    ……
    可是我们的bs系统在weblogic重启后刷新后session还是有效!
      

  11.   

    csdn 的 session 信息可以在我计算机上面保存一个星期,永久保存,你认为服务器 session 信息会在内存里面一个星期?不可能吧?
    另外,如果我修改我 cookie 的信息(好像不难),是不是可以冒充别人?
      

  12.   

    好象大家说了半天都没有说出个所以然来
    我现在遇到个问题,就是要在关闭窗口是能够调用程序清除session
    请问在jsp里怎么捕捉窗口关闭,并执行事先写好的的程序
      

  13.   

    关闭浏览器后,session就消失了
      

  14.   

    session过了有效期 但是页面刷新后 session又有效了 为什么?
      

  15.   

    我这几天就跟人讨论过这个问题,到底session的存活期是不是在关闭流缆器的时候就关闭了,后来我就做了一个实验,就是先用用户名登陆,然后就在付值给session,然后再在获得session的页面做一个连接,这个连接的版面是读当前的session的,结果就是从连接的方法时候获得的读得到,关闭了之所有的网页后再开就读不到了,还有更激烈的就是获得session后把电源拔掉了之后再直接开最后那一页的情况下也是得不到的。这就证明了session的存活是。
    1,网页上在超时间的时间内没有任何的响应,结果超出了时间。
    2,在获得session与在所有得到session后派生出来的网页全部关掉了之后,session自动消失。
    3,客户端关闭(如断电,关闭电源)
    4,服务器端的关闭(服务器的服务关闭或计算机的从新启动)
       以上的我用了六台不同的机做实验,只有一台不符合(可能跟cookies有关系)
    如果有需要的我可以伏上代码
      

  16.   

    hykwolf(Yankang Hu) 说的正确。和关闭浏览器无关。
      

  17.   

    个人认为,session有自己的存活周期,和关不关浏览器无关,session应该是存活在服务器端的值,放在内存中,在客户端应该是cookies,个人意见,仅供参考
      

  18.   

    session怎么可能放在客户端呢???客户端存的是session的ID!
      

  19.   

    我要更正一下我的意见(我用了sessionlistenter从新做了验证),流缆器的关闭与客户端的任何操作的确不能使session消亡,而为什么会出现上面我所说的现象呢?那是因为关闭网页或断电的时候去掉只是session的Atribute项,而不是session,但在验证的用到的却是Atribute,所以就出现了null的现象了。
       所以session的生命周期就是那个时间设定,任何的关闭都不能使他灭亡,除非是注销了它。
       到了这里我就产声了一个疑问,ASP中的session与JSP/servlet中的session是不是不同的呢,如果同,为什么ASP可以用global.asa中的application与session_star,session_end来做在线人数的统计??????
      

  20.   

    浏览器的关闭与客户端的任何操作的确不能使session消亡,
    每一个IE进程在访问网站时都相互独立,保存了相应的SessionID,
    也就是说在IE_a中所得到的SessionID和在IE_b中SessionID是不一样的
    只要这个IE不释放,它所得到的SessionID是不变的
    ASP中的session与JSP/servlet中的session是相同的,ASP的在线功能可以使用SessionListner来完成,它就是和global.asa对应的
      

  21.   

    不对啊,我记得不是有session监听程序用来监听Session是否消失么?在浏览器被关闭的时候就会触发这个监听程序?这是为何?如果浏览器关闭Session不消失,那么如何实现同一用户不能在同时异地登陆的功能限制?请高手们解答,让我学习学习
      

  22.   

    ------to chdw(米)
        session在asp中在线人数统计的appcation中的session_onstart,session_onend,在关闭了ie时就触发,如果按照的是jsp session的思路的话,session lisenter就会只监听到session id的消忘而感应不到session的消忘。这又是怎样解释呢??
      

  23.   

    一个很可怕的问题:如果session在自己的存活周期内无论浏览器是否关闭都存在的话,那么用户是上万,这将占多少内存?
      

  24.   

    是呀,事实上就是这样,但只要你在退出的时候将session注销就可以了,但是如果是死机或是断电的话就不可能用session注销,所以我想应该用Listner监听session的Atribute才是正确的方法,用session的变动来记录用户的在线情况是不科学的做法。这个做发可以解决一部分的问题但还是解决不了null的session的创建的问题,如果要在生成后做比较就太麻烦了。
        还有的是我最想知道的ASP与JSP的session的问题,它们的原理是否相同(例ASP中session_onstart,session_endstart的在线人数统计问题)
      

  25.   

    session_onend也不会在IE关闭时调用吧,这个都是必须在等待session的timeout时间到达才会调用的。jsp的session在IE关闭了一段时间或者长时间调用页面的情况下面,session已经到达timeout时间(不是由IE关闭触发,而是timeout触发)自然就失效了,session lisenter也就得到通知了。当在线人数上到几千的时候,你早就需要开始考虑做集群了,不然Server早死翘翘了ASP和JSP的session原理根本一样
    ASP中session_onstart,session_endstart和sessionListner是完全对应的。没有什么区别
    session_endstart根本不能在我的IE被强行关闭等情况下马上得到通知,都应该是由timeout触发的
      

  26.   

    session死亡 发生在以下情况:
    1.session的持有者(即客户端浏览器)在最大无活动等待时间(MaxInactiveInterval)内无任何响应或请求
    2.session被调用invalidate()方法强制弊了
    3.jsp服务器重起或发生中断(此时应该是所有session都当了)用户关闭浏览器后标志着
    a.session将不再发送请求到服务器
    b.该session将不会有人调用他的invalidate()方法
    所以,此时只能等待session自己超时死亡,如果设置了该session的MaxInactiveInterval为-1,那么这个session只有在第3种情况下才能死了.
    绝对同意~