cookie 是保留在客户端的,session是保存在服务器端的。两者不存在关联关系,为什么不能用session。

解决方案 »

  1.   

    恩,cookie是浏览器的功能,保留在客户端,session是服务器的功能,保留在服务器端,你的问题有毛病
      

  2.   

    楼住其实问的是对话跟踪的实现问题,SESSION在COOKIE打开的时候是把SESSIONID写在COOKIE中的。但如果你关闭了SESSION那么容器会采用在URL中加上JSESSIONID字段来实现对话跟踪。楼上的两位兄弟,你们误解楼主的意思了。
      

  3.   

    struts中支持不使用cookie的session,可以通过struts中定义的taglib使用
      

  4.   

    session 和 cookie 没关系吗?
      

  5.   

    session当然和cookie有关,各位教训楼主的大侠们,拜托研究一下http协议先!
    http本身是无session的,无法跟踪客户端的信息,换句话说:http协议不管是谁联接自己。
    为了实现session,必须有浏览器支持。浏览器可以用cookie存储session,这是最通用的做法。
    但是,如果我自己写一个完全符合http协议的浏览器,但是不配合服务器的session要求,那么服务器就无法产生session。
    好在现在的浏览器都支持session要求,即使关闭了cookie,浏览器也会向服务器传递sessionid,这个id是存储在浏览器的内存空间中的,不保存在硬盘cookie中。
      

  6.   


    sessionid是作为一个临时cookie放在浏览器端的。session的具体信息放在服务器端。每次浏览器发出的请求,都会在http header里 带上 sessionid来标识自己。既然用Struts,顺便再把JSTL用上,下面一个非常有用的标签:清单 12. <c:url> 操作的语法
    <c:url value="expression" context="expression"
        var="name" scope="scope">
      <c:param name="expression" value="expression"/>
      ...
    </c:url>
     URL 重写是由 <c:url> 操作自动执行的。如果 JSP 容器检测到一个存储用户当前会话标识的 cookie,那么就不必进行重写。但是,如果不存在这样的 cookie,那么 <c:url> 生成的所有 URL 都会被重写以编码会话标识。注:如果在随后的请求中存在适当的 cookie,那么 <c:url> 将停止重写 URL 以包含该标识。
    参考:http://www-900.ibm.com/developerWorks/cn/java/j-jstl0318/index.shtml
      

  7.   

    如果关了Cookie,每次提交的时候要显式的带上sessionId,Struts里有相应的功能。
      

  8.   

    就是,所以session和cookie当然是有关系的。
      

  9.   

    Session Tracking 两种常用的方法:
    1 Cookies
    2 URL Rewriting
      

  10.   

    方法一:url中紧跟servlet/jsp文件名加;jsessionid=sessionId,其中sessionId由HttpSession.getId()得到,如http://localhost:8080/aaa/bbb.jsp;jsessionid=saldjfsdflsaeir234?para=1&para2=2方法二:在application(ServletContext)里保存一个session管理器HashMap:sessionId---sessionRef,这样可以在所有的servlet/jsp里调用,这需要在url里将sessionId以参数形式传递,如http://localhost:8080/aaa/bbb.jsp?sessionId=saldjfsdflsaeir234?para=1&para2=2,在服务器端用request.getParameter("sessionId")获取
      

  11.   

    但要注意在用户的session invalidate时删除HashMap里的sessionId---sessionRef