日期:2014-05-18  浏览次数:20888 次

用户在浏览器中进行如下操作会在服务器端开几个Session?
以IE7为例

用户打开浏览器是在服务器上开了一个Session

如果用户此时在桌面上再次双击浏览器图标,输入地址然后连接呢?服务器是否开了一个新的Session?

如果用户右键点了一个超连接,选择在新的选项卡中打开连接呢?服务器是否开了一个新的Session?

如果用户右键点了一个超连接,选择在新的页面中打开连接呢?服务器是否开了一个新的Session?

如果不是IE7而是IE8呢?IE6(当然,IE6没有选项卡)呢?

如果浏览器是 FF或者TT或者Opera或者safari呢?

后台开的Session个数都是一样的吗?

谢谢大家

------解决方案--------------------
用浏览器打开同一个web应用,服务器端的session是一样的

------解决方案--------------------
session是相对于webapp的,楼主开了几个应用,理论上就是开了多少个session
------解决方案--------------------
2楼说的正确,session是针对服务端的
如果客户端打开多个应用就有一个session,每个应用对应一个唯一的session
------解决方案--------------------
open了一个新的页面就开了一个SESSION
页面关闭session失效
------解决方案--------------------
监听服务器端session可以用如下做法
一帮可以用来防止重复登录

Java code
public   class   SessionListener   implements   HttpSessionListener{ 
        private   static   java.util.Hashtable   hUserName   =   new   Hashtable(); 
        public   void   sessionCreated(HttpSessionEvent   se){ 
              System.out.println( "Session   Created. "); 
        } 

        public   void   sessionDestroyed(HttpSessionEvent   se){ 
                hUserName.remove(se.getSession()); 
                System.out.println( "Session   Destroyed. "); 
        }

------解决方案--------------------
在IE7情况下
如果用户此时在桌面上再次双击浏览器图标,输入地址然后连接呢?服务器是否开了一个新的Session? 是

如果用户右键点了一个超连接,选择在新的选项卡中打开连接呢?服务器是否开了一个新的Session? 否

如果用户右键点了一个超连接,选择在新的页面中打开连接呢?服务器是否开了一个新的Session? 没测过,不敢乱讲

在ie7下面,同一个窗口中的多个标签页访问同一个应用时,是共享一个session的,就是说session是根据浏览器窗口的,傲游也是这样,其他浏览器的情况不清楚。

具体实例可以看开心网或校内,在ie7下面,开一个标签页登录A用户,再在同一浏览器窗口下开第二个标签页登录B用户,这是你会发现第一个标签页中的用户再点击链接时,都是B用户的信息了

------解决方案--------------------
如果新窗口是在原来窗口基础上打开的那就是原来的Session

如果是用户直接点击IE图标打开的,就是新Session
------解决方案--------------------
如果用户此时在桌面上再次双击浏览器图标,输入地址然后连接呢?服务器是否开了一个新的Session? 

如果用户右键点了一个超连接,选择在新的选项卡中打开连接呢?服务器是否开了一个新的Session? 

如果用户右键点了一个超连接,选择在新的页面中打开连接呢?服务器是否开了一个新的Session? 


------解决方案--------------------
用户打开浏览器是在服务器上开了一个Session 

如果用户此时在桌面上再次双击浏览器图标,输入地址然后连接呢?服务器是否开了一个新的Session? --yes

如果用户右键点了一个超连接,选择在新的选项卡中打开连接呢?服务器是否开了一个新的Session? ---no

如果用户右键点了一个超连接,选择在新的页面中打开连接呢?服务器是否开了一个新的Session? ---no

如果不是IE7而是IE8呢?IE6(当然,IE6没有选项卡)呢? --- 和上述一样

如果浏览器是 FF或者TT或者Opera或者safari呢? --- 和上述一样

后台开的Session个数都是一样的吗? --- 如果是第一种问题类型,后台就有两个相同的session存在。

------解决方案--------------------
用户打开浏览器是在服务器上开了一个Session

如果用户此时在桌面上再次双击浏览器图标,输入地址然后连接呢?服务器是否开了一个新的Session? --如果可用内存不小于32M就是

如果用户右键点了一个超连接,选择在新的选项卡中打开连接呢?服务器是否开了一个新的Session? ---no

如果用户右键点了一个超连接,选择在新的页面中打开连接呢?服务器是否开了一个新的Session? ---no

如果不是IE7而是IE8呢?IE6(当然,IE6没有选项卡)呢? --- 和上述一样

如果浏览器是 FF或者TT或者Opera或者safari呢? --- 和上述一样

后台开的Session个数都是一样的吗? --- 如果是第一种问题类型,后台就有两个相同的session存在。
------解决方案--------------------
引起这个问题的原因应该是用户信息在session中保存时的key是相同的,我以前的项目中也碰到过
只要在session中保存用户信息时,key值唯一就行了,譬如说用userid做key,然后每个请求中带一个userid过来就能解决
------解决方案--------------------
这个问题我分析过,最后我得出的结论是。这个问题的关键是,cookie在不同的IE进程间是否共享,有些COOKIE是完全共享的,有的作用域只能局限于单个进程。因为cookie中保存着你的sessionid 它被服务器用来决定是否应该生成的新的session