我对sessionid的理解是同一个IE实例 那么sessionid是应该一样的
但是做了这样一个测试 发现好像理解不对
测试环境 tomcat4.1.30 jdk 1.4
启动2个tomcat 端口分别是8080和9090
做了3个session.jsp 内容都是<%out.println(session.getId());%>
放的位置分别为:
A:8080端口下的root目录
B:8080端口下的examples目录
C:9090端口下的root目录我打开一个IE 地址栏输入A地址,再输入B地址(同一个IE) 2次得到的sessionid是不同的,但是A和B地址间无论怎么切换 A和B各自的sessionid是不变的
但是如果我同样再开一个IE 地址栏输入A和C地址之间来回切换 每次得到的sessionid是不同的,A和B各自的sessionid是变动的另外试着输入A?jsessionid=F375C30BCF0FF1E93A6171724640FA31
显示出来的sessionid还是随机的 sessionid不能通过URL重写么

解决方案 »

  1.   

    都是不同的web项目了,sessionid自然不同
    sessionid是能通过Url重写的,但前提是浏览器没有通过别的方式(如Cookie等)向服务器提供sessionid,并且该sessionid是有效id
      

  2.   

    那为什么A和C两个地址间切换  他们各自的SESSIONID会不停的变化呢
      

  3.   

    不要用 SessionID 属性为数据库应用程序创建主关键字。这是因为,如果 Web 服务器重新启动,则部分 SessionID 的值可能同服务器终止前产生的值相同。可以使用自动增加的列数据类型来代替,如 Microsoft® SQL Server 中的 IDENTITY,或 Microsoft® Access 中的 COUNTER 。SessionID 属性返回用户的会话标识。在创建会话时,服务器会为每一个会话生成一个单独的标识。会话标识以长整形数据类型返回。
      

  4.   


    不错。还有你说的 地址变化了,sessionId当然要变化了。
      

  5.   

    我的问题是 A和C之间切换  为什么各自的sessionid一直在变呢?
    A和C的sessionid不同可以理解 但是为什么先访问A 再访问C  再回到A sessionid变了呢
      

  6.   


    这也是有可能的
    假设浏览器对每一个网址(不考虑端口号)保存一个sessionid
    A换到C,C的sessionid覆盖了A的sessionid
    C换回A,这时保存的sessionid已经是无效ID,于是A的服务器端重开了一个session,得到新的sessionid
      

  7.   

    如果浏览器禁用了cookie是可以的
      

  8.   


    那为什么在A和B之间切换没这个问题呢
    A和B也是同一IP 而且端口也相同  只是应用名字不同
    IE6也是一个 没有开新窗口
      

  9.   

    SessionId的默认有效时间为30分钟,可以修改它的有效时间,而且生成的ID都是随机的!