快速理解会话跟踪技术Cookie和Session

news/2024/10/17 22:27:39/

文章目录

  • 会话跟踪技术
  • 客户端会话跟踪技术Cookie
  • 服务端会话跟踪技术Session

会话跟踪技术

  • 会话:客服端和服务端的多次请求与响应称为会话。

  • 会话跟踪:服务器需要识别多次请求是否来自同一浏览器,在同一次会话多次请求中共享数据。

    HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会视为新的请求,因此需要会话跟踪技术实现数据共享。会话跟踪技术可以分为Cookie和Session。

客户端会话跟踪技术Cookie

在这里插入图片描述

  • 数据保存在客户端,每次请求都会携带Cookie数据。如上图所示,浏览器向服务端发送第一次请求时,服务端创建一个Cookie存储username及其对应值zs,在响应中添加Cookie传送到浏览器,浏览器存储该Cookie;浏览器向服务端发送第二次请求时,携带所保存的Cookie,服务器通过getCookies()方法得到浏览器中的所有Cookie。
  • 具体实现:
		// 第一次请求发送Cookie Cookie cookie = new Cookie(key, value);  // 创建Cookierespones.addCookie(cookie); // 添加Cookie
		// 第二次请求获取Cookie,所有cookie都以数组形式返回Cookie[] cookies = request.getCookies();// 选择一个cookie,以0为例获取String name = cookies[0].getName();String value = cookies[0].getValue();
  • Cookie原理:基于HTTP协议
    • 响应头 set-cookie 携带设置好的Cooike返回客户端,客户端保存携带的Cookie
    • 请求头 cookie 携带客户端存储的Cookie发送请求
  • 存活时间:
    • 默认情况下,Cookie存储在浏览器内存中,浏览器关闭,Cookie就被销毁
    • setMaxAge(int seconds) 设置存活时间
      • 正数:Cookie写入电脑硬盘,到时间自动删除
      • 负数:默认值,浏览器关闭,Cookie被销毁
      • 0:删除对应Cookie

服务端会话跟踪技术Session

一次会话多次请求间,怎么保证服务器获取的是同一个Session?

  • 数据保存在服务端。如上图所示,浏览器向服务器发送第一次请求时,服务器通过session的setAttribute()方法保存键值对;第二次发送请求时,由于是同一会话,服务器取得的和第一次相同的session,通过getAttribute()方法得到对应键值对。两次请求服务端是怎么确定是同一会话?因为第一次请求时,服务端将session的id保存为Cookie传送到浏览器,浏览器保存这次会话的session id,第二次请求时,携带第一次请求的session id,服务端通过session id得到与第一次相同的session,保证了两次请求获取的是同一个session。
  • 基本使用:
		// 获取SessionHttpSession session = request.getSession();// 设置sessionsession.setAttribute(key, value);// 得到sessionsession.getAttribute(key);// 删除sessionsession.removeAttribute(key);
  • Session原理:

    • 基于Cookie
    • 如何保证一次会话多次请求是同一个Session?
      Session id(JSESSIONID)被存储为Cookie保存在客户端,下一次请求根据携带的Cookie中的JSESSIONID查找对应Session。
  • 使用细节:

    • Session钝化、活化
      • 钝化:服务器正常关闭后,Tomcat会自动将数据写入硬盘的文件中
      • 活化:再次启动服务器后,从文件中加载数据到Session中
        (咱理解成三体人脱水、浸泡吧)
    • Session销毁
      • 默认30分钟销毁
      • session. Invalidate(); 自己销毁

http://www.ppmy.cn/news/86618.html

相关文章

C++中的继承、以及赋值兼容转换。

一、继承的概念及定义 继承可以使代码复用,允许在保持原有类特性的基础上进行扩展。 举个例子:就好比我现在要封装老师、学生等这些人的属性和方法,但是这些人都有重复的属性和方法,比如name、age、sex等等,那么我可…

虚拟化与云计算有什么区别?

两者核心理念都是从硬件中分离资源,从而创建可用的环境,所以很容易被混为一谈。 虚拟化有助于创建云计算,但它并非实现云计算的决定性技术,也可能只是其中的一种。你可以这样理解: 虚拟化是一种将功能与硬件分离的技…

堆和堆排序

目录 堆的概念 堆的实现 堆的存储结构 堆的插入操作 堆的删除操作 堆的创建 向上调整建堆和向下调整建堆 堆排序 堆的应用 - topK问题 堆的概念 “堆”是计算机科学中一种数据结构,可以看作是一棵完全二叉树。通常满足堆的性质:父节点的值总是…

【firewalld防火墙】

目录 一、firewalld概述二、firewalld 与 iptables 的区别1、firewalld 区域的概念 三、firewalld防火墙默认的9个区域四、Firewalld 网络区域1、区域介绍2、firewalld数据处理流程 五、firewalld防火墙的配置方法1、使用firewall-cmd 命令行工具。2、使用firewall-config 图形…

Win11硬盘分区

电脑重装了Win11系统,按WinE打开主文件夹,再点击此电脑,发现: 磁盘只有一个C盘。硬盘的所有空间都在该盘上了,那么我们怎么将其分区呢? Win11硬盘分区步骤: 步骤1: 按WinR输入dis…

2023国赛tomcat题

环境: 10.10.120.128 安装 tomcaA 10.10.120.129 安装tomcatB 10.10.120.130 安装 nginx 配置dns: 正向解析 反向解析 Tomcat ssl配置 [root@localhost ~]# tar -zxvf jdk-11.0.8_linux-x64_bin.tar.gz [root@localhost ~]# mv jdk-11.0.8 /usr/local/ Vim /etc/profile …

Carla自动驾驶仿真五:opencv绘制运动车辆的boudingbox(代码详解)

文章目录 一、安装opencv二、opencv绘制车辆的boudingbox1、构造相机投影矩阵函数2、定义将Carla世界坐标转换成相机坐标的函数3、设置Carla并生成主车和相机4、使用队列接收相机的数据5、计算相机投影矩阵6、定义顶点创建边的列表7、通过opencv显示相机的画面8、通过opencv绘制…

27 KVM管理系统资源-管理虚拟CPU份额

文章目录 27 KVM管理系统资源-管理虚拟CPU份额27.1 概述27.2 操作步骤 27 KVM管理系统资源-管理虚拟CPU份额 27.1 概述 虚拟化环境下,同一主机上的多个虚拟机竞争使用物理CPU。为了防止某些虚拟机占用过多的物理CPU资源,影响相同主机上其他虚拟机的性能…