会话技术【Cookie、Session】

一、会话跟踪

会话跟踪是一种维护浏览器状态得方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话得多次请求间共享数据
具体得实现方式
(1)客户端会话跟踪技术:Cookie
(2)服务端会话跟踪技术:Session

二、Cookie

2.1 概念和基本流程

Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问

工作流程
在这里插入图片描述
(1)服务端提供了两个Servlet,分别是ServletA和ServletB
(2)浏览器发送HTTP请求1给服务端,服务端ServletA接收请求并进行业务处理
(3)服务端ServletA在处理得过程中可以创建一个Cookie对象并将name=zs得数据存入Cookie
(4)服务端ServletA在响应数据得时候,会把Cookie对象相应给浏览器
(5)浏览器接收到响应数据,会把Cookie对象得数据存储到浏览器内存中,次数浏览器和服务端就建立了一次会话
(6)在同一次会话中,浏览器再次发送HTTP请求2给ServletB,浏览器会携带Cookie对象中得所有数据
(7)ServletB接收到请求和数据后,就可以获取到存储在Cookie对象中得数据,这样一个会话中得多次请i去之间就实现了数据共享

2.2 Cookie的使用

Cookie的操作分为发送Cookie获取Cookie

(1)发送Cookie

  • 创建Cookie对象,并设置数据
    Cookie cookie = new Cookie("key", "value")

  • 发送Cookie到客户端:使用response对象
    response.addCookie(cookie/)

(2)获取Cookie

  • 获取客户端携带的所有Cookie,使用request对象
    Cookie[] cookies = request.getCookies;

  • 便利数组获取每一个Cookie对象

  • 使用Cookie对象方法获取数据
    cookie.getName()
    cookie.getValue()

2.3 Cookie的原理分析

Cookie的实现原理是基于HTTP协议的,其中涉及到HTTP协议的两个请求头信息

  • 响应头:set-cookie
  • 请求头:cookie
    在这里插入图片描述

2.4 Cookie存活时间

  • 默认情况下,Cookie存储在浏览器的内存中,当浏览器关闭,内存释放,则Cookie被销毁
  • 设置Cookie存活时间:setMaxAge(int seconds)
    (1)正数:将Cookie写入浏览器所在的硬盘,持久化存储。到时自动删除
    (2)负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
    (3)零:删除对应Cookie

二、Session

服务端会话跟踪技术:将数据保存到服务端
JavaEE提供HttpSession接口,来实现一次会话的多次请求间的数据共享功能

使用

  • 获取Session对象
    HtttpSession session = request.getSession()

  • Session对象功能
    (1)void serAttibute(String name, Object o):存储数据到session域中
    (2)Object getAttribute(String name):根据Key,获取值
    (3)void removeAttribute(String name):根据key,删除该键值对


版权声明:本文为yangchuangyc原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。