为什么Session.invalidate()后request.getSession(true),
又得到一个session的id不同,
但刷新以后session的id就相同了.代码如下
<%HttpSession s2=request.getSession(true); %>
<%=s2.getId()%>
<%s2.invalidate(); %>
<%HttpSession s3=request.getSession(true); %>
<%=s3.getId() %>第一次访问的结果是
aWTekOtBry25ruGv2n    aGJEBV3qy5daruGv2n 
刷新一下就变成aGJEBV3qy5daruGv2n aGJEBV3qy5daruGv2n 为什么?

解决方案 »

  1.   

    第一次:aWTekOtBry25ruGv2n 第二次:aGJEBV3qy5daruGv2n 第三次:aGJEBV3qy5daruGv2n 第四次:aGJEBV3qy5daruGv2n 你发现没有,第二次,第三次,第四次的值你用<%=session%>来查看对象的值你就明白了。我也不知道为什么第四次的值是那个。
      

  2.   

    ACDD1FDC8A39383E79498373B30AA57BFD9F4DBDFB86A4F24D4B0C4CC95A3CEBFD9F4DBDFB86A4F24D4B0C4CC95A3CEB 01AE9E64462EFA164E503FBAC7126C8D这个是我的值,和你的不一样,我觉得我的才是我意料中的。你仔细再看看。
      

  3.   

    页面是:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html; charset=gb2312"%>
    <%@ page session="false"%> <html xmlns="http://www.w3.org/1999/xhtml">
    <%HttpSession s2=request.getSession(true); %><br>
    <%=s2.getId()%><br>
    <%s2.invalidate(); %>
    <%HttpSession s3=request.getSession(true); %>
    <%=s3.getId() %>
    </html>
    第一次访问是:
    aJKbAcU8mCm84ivK2n
    avwI9_wuydt64ivK2n 
    刷新:
    avwI9_wuydt64ivK2n
    avwI9_wuydt64ivK2n 
    再刷新
    avwI9_wuydt64ivK2n
    avwI9_wuydt64ivK2n 
    我这就是这样啊!
    ?
    你们怎么只显示一个啊?应该s2 s3都被显示,第一次不同,刷新以后就相同了~
      

  4.   

    虽然每次刷新sessionID相同,但是session的hashcode不同,我想知道服务器是不是新建了一个session
      

  5.   

    很奇怪啊,你使用的什么应用服务器,websphere, weblogic 或 tomcat
      

  6.   

    当你session 存在的时候就不为你产生新的sessionid了,没有则产生一个新的session id
      

  7.   

    好像清除session后,
    只有刷新后才会真的清除。
      

  8.   

    <meta http-equiv="cache-control" content="no-cache">
     缓存问题
      

  9.   

    第一次s2的Session在开始的时候被创建所以 s2的SessionID会被输出,
    你得s2.invalidate(); 这句代码把 s2的Session设置为不可用了,相当于把s2的Session关闭掉了。那么在你以后的代码输出时s2.getId()就不会输出有了。
      

  10.   

    我觉得是有缓存的问题,你不防在地址栏加入一个参数如,?num=123  这样你每次访问修改参数值就能保证浏览器真实的去访问服务器端,并真实显示结果,不然相同地址刷新有的时候会返回缓存的