JavaEE会话技术之Cookie

概念

会话

一次会话包含多次请求和响应。

一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止。

功能

在一次会话范围内的多次请求间,共享数据

方式

1.客户端会话技术:
        Cookie
2.服务器端会话技术:
        Session

Cookie

概念

客户端会话技术,将 数据保存到客户端

快速入门

使用步骤

1. 创建Cookie对象,绑定数据
    * new Cookie(String name,String value)
2. 发送Cookie对象
    *response.addCookie(Cookie cookie)

3. 获取Cookie,拿到数据
    *Cookie[]   request.getCookies()

*在同一个浏览器先访问CookieDemo1,再访问CookieDemo2控制台打印数据。

  • 若是在一个浏览器访问CookieDemo1后,在另一个不同的浏览器访问CookieDemo2.控制台不会输出数据。

实现原理

基于响应头set-cookie和请求头cookie实现:

Cookie的细节

  1. 一次可不可以发送多个cookie?

    *可以
    可以创建多个Cookie对象,
    使用response调用多次addCookie方法发送cookie 即可。
  2. cookie可以在浏览器中保存多长时间?

    1. 默认情况下,当浏览器被关闭后,cookie数据被销毁。
    2. 持久化的存储:
        * setMaxAge(int seconds)
           1. 正数:将cookie数据写到硬盘文件中,持久化储存。secons表示存活时间。
           2. 负数:默认值
           3. 零:删除cookie信息
  3. cookie能不能存中文?

    *在tomcat 8之前,cookie中不能直接储存中文数据
        需要将中文数据转码--一般采用URL编码(%)
    *在tomcat 8之后,cookie支持储存中文数据
  4. cookie获取的范围是多大?

    1. 假设在同一个tomcat服务器中,部署了多个web项目,
      那么这些web项目中cookie能不能共享?
    -默认情况下cookie不能共享
    -由setPath(String path):设置cookie的获取范围,默认情况下为当前虚拟目录。
    -如果要共享则可以将path设置为"/"
    
    2.在不同的tomcat服务器间的cookie 共享问题?
        setDomain(String path):如果设置一级域名相同,则多个服务器之间cookie可以共享
        *setDomain(".baidu.coom"),那么tieba.baidu.com和news.baidu.com的cookie可以共享

Cookie的特点和作用

特点

1. cookie存储数据在客户端浏览器
2. 浏览器对于单个cookie的大小有限制(4kb)
    以及对同一个域名下的cookie数量也有限制 (20个)

作用

1. cookie一般用于存储少了的不太敏感的数据
2. 在不登录的情况下,完成服务器对客户端的身份识别
文章目录
  1. 1. 概念
    1. 1.1. 会话
    2. 1.2. 功能
    3. 1.3. 方式
  2. 2. Cookie
    1. 2.1. 概念
    2. 2.2. 快速入门
      1. 2.2.1. 使用步骤
    3. 2.3. 实现原理
    4. 2.4. Cookie的细节
    5. 2.5. Cookie的特点和作用
      1. 2.5.1. 特点
      2. 2.5.2. 作用
,