一文详解Cookie,Session以及浏览器与Cookie,Session的底层联系

news/2024/10/22 16:20:46/

Cookie:

  1. 翻译过来就是饼干的意思
  2. Cookie是服务器用于保存键值对的一种技术,保存的是一段文本信息。
  3. 客户端有了Cookie之后,每次请求都会发送给服务器
  4. 每个Cookie的大小不能超过4KB

创建Cookie

Cookie cookie = new Cookie (“key”,“Value”);
resp.addCookie(Cookie);

服务器获取Cookie

req.getCookies();
//这里获取的其实是一个Cookie数组

获取的是以一个Cookie数组,但是并不是相对于map那样可以直接获取键值,需要挨个进行遍历

Cookie值的修改

有两种方法:

  1. 首先创建一个和原来那个Cookie同名的Cookie键,然后在构造器中赋予新的值,最后通过resp.addCookie(Cookie)加入Cookie
  2. 首先挨个进行遍历每一个Cookie,调用setValue方法赋予新的Cookie值,通过resp.addCookie(Cookie)方法保存加入Cookie

Cookie的生命控制

setMaxAge()方法

  1. 正数,表示在指定的秒数后面过期
  2. 负数,表示浏览器一关,Cookie就会被删除(默认值是-1)
  3. 0,表示马上删除Cookie
    Cookie通过有效路径去过滤掉哪些Cookie可以发送给服务器

Session

  1. Session是一个接口
  2. 是一个会话,是用来维护一个客户端和一个服务器之间关联的一种技术
  3. 每个客户端都有自己的一个Session会话
  4. Session会话中,我们经常用来保存用户登录之后的信息

Session创建以及获取

req.getSession()
第一次调用是创建Session会话
之后调用的时候都是获取前面创建好的Session会话对象

isNew()判断是不是刚创建出来的Session
true
false

每一个Session都会有一个ID值,这个ID是唯一的,getId()是得到Session的会话id值

Session生命周期的控制

public void setMaxInactiveInterval(int interval) 设置 Session 的超时时间(以秒为单位),超过指定的时长,Session
就会被销毁。
值为正数的时候,设定 Session 的超时时长。
负数表示永不超时(极少使用)
public int getMaxInactiveInterval()获取 Session 的超时时间
public void invalidate() 让当前 Session 会话马上超时无效。
Session 默认的超时时长是多少!
Session 默认的超时时间长为 30 分钟。
因为在 Tomcat 服务器的配置文件 web.xml 中默认有以下的配置,它就表示配置了当前 Tomcat 服务器下所有的 Session
超时配置默认时长为:30 分钟。

30

如果说。你希望你的 web 工程,默认的 Session 的超时时长为其他时长。你可以在你自己的 web.xml 配置文件中做
以上相同的配置。就可以修改你的 web 工程所有 Seession 的默认超时时长

浏览器与Cookie,Session的底层联系

  1. 首先客户端没有任何的Cookie信息,向服务器请求数据
  2. 服务器收到请求(服务器端有一个服务器内存,在服务器内存中存储着创建过的Session对象,每一个Session对象都会有一个ID值),创建一个Session对象,返回给浏览当前创建Session的ID值
  3. 浏览器收到之后就会马上创建一个Cookie,这个Cookie是当前Session对象的Cookie值,这也说明了之前为什么说Cookie对应的是一个文本信息。

为什么浏览器关闭,Session就不存在了?

Session在创建之后,是使用Cookie来进行存储转发的,浏览器一关闭Cookie不是保存在浏览器端吗?为什么会丢失了?
其实Cookie是是分为一种在线的Cookie和本地的Cookie,之前说的就是在线Cookie,一个Cookie是对应一个线程,当浏览器关闭之后这个进程就关闭了,之后浏览器就找不到这个Session的ID就会重新在创建一个,原来的那个Session对象其实还存在,直到自己的时间结束。


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

相关文章

MongoDB 安装教程

基于作者Window10安装教程其他平台参考MongoDB官方手册 1.在这里我们直接下载这个64位版本 2.下载完成后,安装过程非常简单,选择自定义安装 3.这一步可以选择安装位置,你们可以自行选择 4.直接下一步next 5.最后install的时候 取消掉 i…

BL-HUF35A-AV-TRB 电子元器件 BRIGHT 封装SMD 批次2021

LM75BDP PBSS5240T PCA9548APW PCA9554APW PCA9539PW BL-HUF35A-AV-TRB BL-HUF33H-AV-TRE BL-HGE36A-AV-TRB

贴片DO-218AB封装TVS二极管SM8T33A

提及“汽车级瞬态二极管”,大多数电子工程师都会想到DO-218AB封装SM8S系列中的SM8S24V、SM8S33A、SM8S36A、SM8S36CA等等,这些物料常用于汽车12V系统和24系统中,可通过抛负载7637-5a/5b测试,为汽车电子产品安全保驾护航。关于汽车…

FRDM-KW36入门学习(二、运行heart_rate_sensor工程)

本次的参考文档是《Bluetooth Low Energy Quick Start Guide》 文档在协议栈文件夹下:C:\SDK_2.2.0_MKW36A512xxx4 (1)\docs\wireless\Bluetooth 1、打开工程,工程路径:C:\SDK_2.2.0_MKW36A512xxx4 (1)\boards\frdmkw36\wireless_examples\…

SM8S33、TVS瞬态抑制二极管在汽车上的问题与应用

随着经济的发展,现代汽车工业也在的高速发展,汽车的电子化、数字化、自动化、通讯化、自动驾驶等相关模块的成为汽车行主流方向;于此同时系统之间的EMC电磁兼容就显得尤为重要,我们专门为电气化的设计提供了高效的保护方案与应用&…

JS 不可逆加密后半部分,去混淆还原代码。

第二篇 第四段 去混淆(解密后的代码,又一段新的历程) 接下来的代码行数以解密后的 jiemi.js 文件为基准 第一段是一个定时器,定时器以 4000ms 的间隔调用一个 _0x10c488 方法, 里面定义了一个 Object,这个…

Python 入坑之路软件安装(二)

Python 学习(二) Python 开发环境配置 安装 requests 请求库,windows使用管理员打开cmd命令窗口,执行命令 C:\WINDOWS\system32>pip3 install requests Collecting requestsUsing cached https://files.pythonhosted.org/packages/f1/ca/10332a30c…

车载电子瞬态浪涌保护用瞬态抑制TVS二极管,如何正确选型?

“多功能化”、“小型化”、“高密度化”等成为了当今半导体器件的代表关键词,尤其是在汽车电子控制系统应用中,表现地淋漓尽致。众所知周,汽车电子系统中的半导体器件极其容易受到多种瞬态浪涌的干扰、威胁。为此,汽车电子瞬态浪…