反复看了张志宇的视频,了解如下:
session基于两种方法实现:
1.)基于cookie      
2.)基于重写url
现在只讨论方法(1.),方法(1.)是:
通过把sessionID写入客户端的cookie(第一次打开页面时);
再通过从cookie中读取sessionID(刷新页面和页面跳转时),以此来识别用户的一次访问活动;因此,
若把cookie禁掉,应该出现这样一种情况:
每次刷新页面,都会产生新的sessionID(视频中演示的也的确是这样)
但我在自己机子上实验,并非如此,
我已把隐私调到最高(禁止一切cookie)
<%@ page contentType="text/html; charset=gb2312" %>
<%
out.print(session.getId()+"<br>");
out.print(request.isRequestedSessionIdFromCookie()+"<br>");
out.print(request.isRequestedSessionIdFromURL()+"<br>");
%>
以上页面第一次打开时:
E78254F63FEA7233233F7195F2E4B084
false
false
之后刷新多次都是:
E78254F63FEA7233233F7195F2E4B084
true
false貌似cookie仍在发挥作用,跟禁用cookie之前没有任何区别。
各位,在你们的机子上也是这样的吗?
是不是我的理解有误?

解决方案 »

  1.   

    你吧Request的head属性打出来看看!!
      

  2.   

    应该还是没真正地禁掉
    调高以后机器上是每次不一样的
    i3kbdxflenwt
    false
    falsedv6jyvqg7rg4
    false
    false1fu2dpoqn6vgv
    false
    false
      

  3.   

    第一次代开:
    A8490461B1FCD6A27C0D3432918CC818
    false
    false
    accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, */*
    accept-language = zh-cn
    accept-encoding = gzip, deflate
    user-agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA)
    host = localhost
    connection = Keep-Alive
    ____________________________________
    之后刷新:
    A8490461B1FCD6A27C0D3432918CC818
    true
    false
    accept = */*
    accept-language = zh-cn
    accept-encoding = gzip, deflate
    user-agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; CIBA)
    host = localhost
    connection = Keep-Alive
    cookie = JSESSIONID=A8490461B1FCD6A27C0D3432918CC818
    _____________________________________代码是:
    <%@ page contentType="text/html; charset=gb2312" import="java.util.*"%>
    <%
    out.print(session.getId()+"<br>");
    out.print(request.isRequestedSessionIdFromCookie()+"<br>");
    out.print(request.isRequestedSessionIdFromURL()+"<br>");

    Enumeration<String> em=request.getHeaderNames();

    while(em.hasMoreElements()){
    String name=em.nextElement();
    String value=request.getHeader(name);

    out.print(name+" = "+value+"<br>");
    }
    %>
      

  4.   

    把下面几行加到<head>里,否则你每次刷新都是从本地缓存取内容,当然不会变。
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">还有,哪个老师是谁啊,什么叫“session基于两种方法实现”?
    session、cookie、url重写,是会话跟踪的三种实现手段,这三个是并列关系。
    连这种简单的概念都搞不清,建议换个视频学习。
      

  5.   

    楼上的高人,我加了你给的代码
    <meta http-equiv="pragma" content="no-cache"> 
    <meta http-equiv="cache-control" content="no-cache"> 
    <meta http-equiv="expires" content="0">还是老样子,刷新不会变!
      

  6.   

    看来是你禁用cookie不彻底,刚试过是没问题的,而且不用加那几个禁用缓存的的meta也行。
    我没找到ie怎么禁cookie,所以用firefox试的。
      

  7.   


    大哥,你自己不要不懂装懂,人家说的是
    1. 服务器产生新的session后,通过cookie:JSESSIONID=xxxxxx,把sessionId通知客户端,以后,每次客户端都通过cookie,让服务器来识别客户端的session
    2. 则是通过URL最后添加";jsessionid=06C16A236115BBDE9D60429C435CC185"的方式