首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

用户在浏览器中进行如下操作会在服务器端开几个Session?该怎么处理

2012-01-28 
用户在浏览器中进行如下操作会在服务器端开几个Session?以IE7为例用户打开浏览器是在服务器上开了一个Sess

用户在浏览器中进行如下操作会在服务器端开几个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



推荐你看片博客文章http://hi.baidu.com/sampras1212/blog/item/a61228f985127f51252df23b.html很详细,我觉得你看了能够消除你心中的疑惑。
[解决办法]
浏览器的同一个tab是一个session,不同窗口才是不同的session
[解决办法]
不同浏览器不一样。
对于FF来说,整个FF应用就只有一个Session,只有当所有的FF窗口关闭以后,再重新开启的时候才会是新的Session
对于IE来说,和FF是一样的。
对于TT来说,默认是不能开启多个浏览器窗口的,但是允许了多实例启动后,一个TT窗口就是一个Session。
几乎所有的浏览器(我用过的),在开启新标签页的时候会共享原来的Session的。
其他的浏览器没怎么用过,不知道什么情况。
[解决办法]
一般情况下都是一个浏览器一个Session,比如你同时开IE,FIrefox,Chrome三个浏览器访问网站,那么针对你这同一个用户网站会有3个session开放。
Session默认情况下是以cookie内存储的sessionId作为识别标志,而cookie在浏览器之间独立的。
所以如果是同一个浏览器不管开多少个窗口,都只有一个Session
[解决办法]
顶19楼

关键在于cookie是否在多个浏览器进程共享;

如果共享,不管你开多少个浏览器,都是一个session

不共享,就一个浏览器对应一个session;

同一个浏览器进程,也就是一个浏览器里的多个选项卡都是同一个session

热点排行