Cookie和Session

Posted lijiext

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie和Session相关的知识,希望对你有一定的参考价值。

Session和Cookie

1. 会话技术

  1. 会话:一次会话中包含多个请求和响应;从浏览器给服务器发送请求开始,直到某一方断开连接为止
  2. 功能:在一次会话中的多次请求之间共享数据
  3. 方式:
    1. 客户端会话技术:Cookie
    2. 服务端会话技术:Session
  1. 功能:将数据保存在客户端

  2. 入门:

    1. 创建Cookie对象,绑定数据

      new Cookie(String name, String value)

      Cookie cookie=new Cookie("msg","helloworld");
      
    2. 发送Cookie对象

      response.addCookie(Cookie cookie)

      response.addCookie(cookie);
      
    3. 获取Cookie,拿到绑定的数据

      request.getCookies()

      Cookie[] cookies = request.getCookies();
      if (cookies!=null){
          for (Cookie cookie : cookies) {
              String cookieName = cookie.getName();
              String cookieValue = cookie.getValue();
              System.out.println(cookieName+""+cookieValue);
          }
      }
      
  3. 流程分析

    1. 第一次请求时服务器给响应头set-cookie: key-value
    2. 第二次请求时请求头带有cookies
  4. 细节处理

    1. 一次发送多个cookie:需要多少个就add多少个

    2. cookie在浏览器保存多久:

      1. 默认浏览器关闭后被销毁

      2. 持久化:

        setMaxAge(int seconds)

        seconds>0 表示持久化,写到文件中;同时表示cookie的保存时间(秒)

        seconds<0 表示默认值

        seconds=0 表示删除cookie

    3. cookie能否存放中文字符:

      tomcat8前不支持,如果需要则需要将中文URL编码

    4. cookie获取范围:

      1. 多个webapp能否共享?

        默认不能共享;如果需要则要设置path为根路径cookie.setPath("/")

      2. 不同tomcat服务器的cookie能共享吗?

        cookie.setDomain(String domain)设置一级域名相同,则可以共享

    5. cookie特点

      1. 数据存储在客户机
      2. 浏览器对于单个cookie大小有限制(max 4kb)以及同一域名下cookie个数有限制(20)
      3. 一般用于不登录身份鉴别

以上是关于Cookie和Session的主要内容,如果未能解决你的问题,请参考以下文章

少部分手机浏览器对于COOKIE支持不够导致服务端无法读取session的解决方案

Cookie和Session的工作流程及区别(附代码案例)

cookie和session

cookie和session

cookie和session

会话技术知识点整理(Cookie和Session)