对于session我有点疑惑,我打开两个网页,其中一个是创建了session的,另一个是个网上随便的一个网页。
这时我关闭了有session的网页,不是点击退出做session删除操作的。这时关闭浏览器是不是这个session就
不存在了,可是我在另一个网页直接敲路径还是可以访问的,我把这个网页也关掉,重新打开一个新的网页,在
敲路径,就判断出session不存在不可访问了,请问这是为什么呢?
还有在网页上有,到网页首页和会员注册一项,当点击它们时,程序会转向登录页,这时原有的session还存在,不知道
这样会不会出问题,请问大家是怎么解决这类情况的,谢谢!

解决方案 »

  1.   

    session是在服务端存在的,跟你关不关浏览器无关关闭浏览器的时候,页面程序可以捕捉关闭事件,把session删除,不过,有时候灵有时候不灵
      

  2.   

    你双击浏览器打开后,不管你其他打开了多少个页面,这都属于一个session.直到你关闭整个浏览器为止,而不只是关闭某一个页面.
      

  3.   

    谢谢回答,请问还有在网页上有,到网页首页和会员注册一项,当点击它们时,程序会转向登录页,这时原有的session还存在,不知道这样会不会出问题
      

  4.   

    我没碰到过这样的问题关闭Browse  Session 就自动销毁了啊
      

  5.   

    其实当你关闭浏览器的时候session并没有消失,因为session是保存在服务器的。
    你关闭浏览器这一动作,服务器根本就不知道。
    但是隔了一段时间没有去访问,也就是超过了session设置的最大活动时间
    这时候session才会消失,也就是说当你关闭浏览器的时候session并不会马上消失
    这就是为什么楼主在关闭了原来那个有session的网站另外一个开着的网站还能访问
    的原因了
    如果在重新开一个网站的话,服务器会为该请求重新分配一个session,
    然后将sessionid发送给客户端,所以原来那个session就访问不到了
      

  6.   

    session是保存在服务器端的,客户端关闭浏览器这一动作,服务器端根本就无从知晓,所以session根本没法立即销毁,只是关闭浏览器后原有的那个session访问不到了而已。
      

  7.   

    当然如果想要销毁的话,可以手动调用session.invalidate()方法
      

  8.   

    页面设置scope=""这个可以设置
    另外,如果页面中有代码可以清空session
      

  9.   

    我弱弱的觉得,session是保存在服务器端的,服务器传给客户端的是一个sessionid,一般情况下你关闭浏览器session还会保存20分钟。你开一个浏览器再开另一个浏览器就是两次请求,服务器会创建两个session。
      

  10.   

    我现在可以捕获浏览器的关闭事件并在这个关闭事件中清除session
    可是直接输入路径还可以访问,就是当操作或点击链接时程序才判断session==null
    这是为什么呢
    session.invalidate();
      

  11.   

    访问的页面可能有一个缓存,再次向服务器端请求的时候,服务器才验证你的session是否有效,如果是已经失效的session就不处理了
      

  12.   

        http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID
    -----------------------------------------
    可以看下这个blog的解释,http://xieronghua246.javaeye.com/blog/407343