zoukankan      html  css  js  c++  java
  • Cookie和Session

       说明:一直很佩服那些把知识研究的很透彻的人,用session很久了,但是cookie还没怎么用过,刚好手中接了一个任务,负责合作企业门户网站开发,有一个订单查阅模块,查件历史,当鼠标悬浮上面的时候,显示在当前浏览器上查过单号的历史记录,这很明显是cookie来实现的,借此机会研究一下。

      

      1、Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效
      服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。

    可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。

        2、Cookie是客户端的存储空间,由浏览器来维持

    获取Cookie的代码:

    cookie[]cookies = request.getCookies();
    if (cookies.lenght == 0 || cookies == null)
    out.println("Has not visited this website");
    }
    
    else
    {
    for (int i = 0; i < cookie.length; i++)
    {
    out.println("cookie name:" + cookies[i].getName() + "cookie value:" +
    cookie[i].getValue());
    }
    }
    
    
    运行结果:
    cookie name:JSESSIONID cookie value:KWJHUG6JJM65HS2K6 
    

      3、为什么会有Cookie

      http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到sessionid=KWJHUG6JJM65HS2K6之类的字符串。

  • 相关阅读:
    git commit之后未submit,rebase之后找不到自己代码的处理方法
    Objective-C语言--属性和实例变量
    synthesize 与dynamic的区别
    isKindOfClass和isMemberOfClass 区别
    python 报错整理
    使用fastJson 来解析 json
    使用Gson 解析json
    android json数据解析
    Android 常用布局
    cocos2dx 学习代码记录
  • 原文地址:https://www.cnblogs.com/geekdc/p/5756953.html
Copyright © 2011-2022 走看看