CookieSession

news2024/11/28 19:05:18

目录

什么是会话

一.Cookie

1.Cookie介绍

2.Cookie的作用 

3.Cookie的基本使用

4.Cookie生命周期

5.Cookie有效路径

6.注意事项

二.Session

1.Session基本原理

 2 Session的作用

 3.Session的基本使用

4.Session底层实现机制

 5.Session生命周期


什么是会话

Cookie和Session一种Web开发会话技术,会话是指用户在与网站或应用程序进行交互时的一系列连续操作。在一个会话中,用户可能会进行多次请求和响应,包括登录、浏览页面、提交表单、添加商品到购物车等操作。

会话的主要特点包括:

  1. 持续性:会话是一个连续的过程,用户在一段时间内与网站或应用程序进行交互,直到会话结束。

  2. 交互性:用户在会话中可以进行多种操作,与网站或应用程序进行多次请求和响应。

  3. 一致性:在同一个会话中,用户的操作和状态应该是一致的,例如用户登录后,在同一个会话中可以一直保持登录状态。

会话管理通常涉及到用户认证、状态保持、数据传输等方面,而会话过程中不可避免各自产生一些数据,服务器需要为用户保存这些数据.

一.Cookie

访问某些网站时,会提示你上次登录网站的时间,而且不同用户提示的登录时间与各自对应,访问某些购物网站的时候,能看到曾经浏览过的商品,在登录某些网站的时候,还可以选择记住账号密码,避免重复输入.这些功能技术Cookie技术实现的

Cookie(小甜饼)是客户端技术,服务器把每个用户的数据以 cookie 的形式写给用户各自的浏 览器。当用户使用浏览器再去访问服务器中的 web 资源时,就会带着各自的数据去。这样,web 资源处理的就是用户各自的数据了。

1.Cookie介绍

1.Cookie时服务器在客户端保存用户的信息,比如登录名,历史记录等,都可以通过Cookie方式保存.

2.Cookie信息就像是小甜饼一样,数据量并不大,服务器在需要的时候可以从客户端(浏览器)读取

3.Cookie数据是保存在客户端的

2.Cookie的作用 

  1. 记住用户的登录状态:网站可以使用Cookie来存储用户的登录信息,使用户在访问网站时无需重复输入用户名和密码。

  2. 个性化用户体验:网站可以根据用户的Cookie信息,提供个性化的内容和推荐,例如根据用户的浏览历史推荐相关商品。

  3. 购物车功能:网上购物网站可以使用Cookie来存储用户的购物车信息,使用户可以随时查看和修改购物车中的商品。

  4. 记住用户偏好:网站可以使用Cookie来存储用户的偏好设置,例如语言偏好、主题偏好等,以提供更好的用户体验。

  5. 网站流量分析:网站可以使用Cookie来跟踪用户的访问行为,分析网站流量和用户行为,以优化网站内容和布局。

3.Cookie的基本使用

1.Cookie像一张表(K-V),存储键值对,数据类型都是String 

2.创建一个Cookie

Cookie c =new Cookie(String name,String val);

c.setMaxAge();//该cookie保存时间

3.将一个Cookie添加到客户端

response.addCookie(c);//通过HTTP协议的相应将cookie带回客户端

4.在服务端读取cookie数据

resquest.getCookies();

4.Cookie生命周期

1.Cookie的生命周期指的是如何管理Cookie什么时候被销毁

2.setMaxAge(n) (>0 表示n秒后删除,<0 表示随浏览器关闭删除,=0 表示立即删除) 

5.Cookie有效路径

Cookie 的 path 属性可以有效的过滤哪些 Cookie 可以发送给服务器。哪些不发。 path 属性是通过请求的地址来进行有效的过滤

cookie1.setPath = /工程路径

cookie2.setPath = /工程路径/aaa

请求地址: http://ip:端口/工程路径/资源

cookie1 会发给服务器 cookie2 不会发给服务器

请求地址: http://ip:端口/工程路径/aaa/资源

cookie1 会发给服务器 cookie2 会发给服务器

6.注意事项

1. 一个 Cookie 只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值 (VALUE)。

2. 一个 WEB 站点可以给一个浏览器发送多个 Cookie,一个浏览器也可以存储多个 WEB 站 点提供的 Cookie。

3. cookie 的总数量没有限制,但是每个域名的 COOKIE 数量和每个 COOKIE 的大小是有限 制的 (不同的浏览器限制不同, 知道即可) , Cookie 不适合存放数据量大的信息。

4. 注意,删除 cookie 时,path 必须一致,否则不会删除

二.Session

不同的用户登录网站后,不管该用户浏览该网站的哪个页面,都可显示登录人的名字, 还可以随时去查看自己的购物车中的商品, 是如何实现的?  也就是说,一个用户在浏览网站不同页面时,服务器是如何知道是张三在浏览这个页面, 还是李四在浏览这个页面?

Session 是服务器端技术,服务器在运行时为每一个用户的浏览器创建一个其独享的 session 对象/集合,由于 session 为各个用户浏览器独享,所以用户在访问服务器的不同页面时,可以从各自 的 session 中读取/添加数据, 从而完成相应任务.

1.Session基本原理

1. 当用户打开浏览器,访问某个网站, 操作 session 时,服务器就会在内存(在服务端)为该浏览器分配一个 session 对象,该 session 对象被这个浏览器独占, 如图

2. 这个 session 对象也可看做是一个容器/集合,session 对象默认存在时间为 30min(这是tomcat/conf/web.xml),也可修改

 2 Session的作用

1. 在网站上保持用户登录状态:当用户登录到一个网站时,网站会创建一个session来存储用户的登录状态,这样用户在浏览网站的不同页面时不需要重复登录。

2. 存储用户购物车信息:在一个电子商务网站上,用户可以将商品加入购物车,这些商品信息可以存储在session中,以便用户在结账时查看和编辑购物车中的商品。

3. 跨页面传递数据:在一个多页面的网站中,session可以用来在不同页面之间传递数据,比如用户在一个页面中填写了表单数据,这些数据可以存储在session中,然后在另一个页面中使用。

4. 实现用户个性化设置:网站可以根据用户的偏好和设置存储在session中的数据来提供个性化的服务,比如用户选择了偏好的语言或主题颜色,这些设置可以存储在session中。

5. 记录用户活动:网站可以使用session来记录用户的活动,比如用户在网站上浏览了哪些页面、点击了哪些链接等,这些信息可以帮助网站优化用户体验。

 3.Session的基本使用

1.session与cookie类似存储在一种表容器中,K(String) V(Object)

2.创建和获取session

HttpSession hs=request.getSession();//第 1 次调用是创建 Session 会话, 之后调用是获取创建好的 Session 对象

2.添加session属性

hs.setAttribute(String name,Object val);

3.获取属性

Object obj=hs.getAttribute(String name);

4.删除属性

hs.removeAttribute(String name);

5.判断是否为新session

isNew();

6. 每个 Session 都有 1 个唯一标识 Id 值。通过 getId() 得到 Session 的会话 id 值

4.Session底层实现机制

 

 5.Session生命周期

session 是否过期,是由服务器来维护和管理

 1. public void setMaxInactiveInterval(int interval) 设置 Session 的超时时间(以秒为单位), 超过指定的时长,Session 就会被销毁

2. 值为正数的时候,设定 Session 的超时时长。

3. 负数表示永不超时

4. public int getMaxInactiveInterval()获取 Session 的超时时间

5. public void invalidate() 让当前 Session 会话立即无效

6. 如果没有调用 setMaxInactiveInterval() 来指定 Session 的生命时长,Tomcat 会以 Session 默认时长为准,Session 默认的超时为 30 分钟, 可以在 tomcat 的 web.xml 设置

7. Session 的生命周期指的是 :客户端/浏览器两次请求最大间隔时长,而不是累积时长。 即当客户端访问了自己的 session,session 的生命周期将从 0 开始重新计算。(老韩解读: 指 的是同一个会话两次请求之间的间隔时间)

8. 底层: Tomcat 用一个线程来轮询会话状态,如果某个会话的空闲时间超过设定的最大值, 则将该会话销毁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1599226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++从入门到精通——类的6个默认成员函数之赋值运算符重载

赋值运算符重载 前言一、运算符重载定义实例注意要点 二、赋值运算符重载赋值运算符重载格式赋值运算符重载要点重载要点传值返回和传址返回要点 三、前置和后置重载 前言 类的6个默认成员函数&#xff1a;如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么…

Cloudflare Workers 付费文档

定价 默认情况下&#xff0c;用户可以访问Workers免费计划。Workers免费计划包括对Workers、Pages Functions和Workers KV的有限使用。了解更多关于免费计划限制的信息。 Workers付费计划包括Workers、Pages Functions、Workers KV和Durable Objects的使用&#xff0c;每个账…

移植speexdsp到OpenHarmony标准系统②

在linux上生成speexdsp的so动态链接库和.a静态链接库 make和make install后会生成speexdsp的.so动态链接库和.a静态链接库 make make install其中build/lib目录下&#xff1a; ├── libspeexdsp.a /*静态库*/ ├── libspeexdsp.la …

基于Springboot+Vue的Java项目-免税商品优选购物商城系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

MySQL 列数据跨表拷贝,一句SQL快速将表A每条记录的某些字段拷贝到表B每条记录的某些字段(A、B表通过ID对应)

文章目录 MySQL 列数据跨表拷贝&#xff0c;一句SQL快速将表A每条记录的某些字段拷贝到表B每条记录的某些字段&#xff08;A、B表通过ID对应&#xff09;背景定义表填充测试数据跨表一 一对应拷贝列数据SQL参考资料 MySQL 列数据跨表拷贝&#xff0c;一句SQL快速将表A每条记录的…

创建影子用户

文章目录 1.认识影子用户2.创建隐藏账户并加入管理员组3.修改注册表3.删除用户4.添加管理员权限 1.认识影子用户 影子用户通常指的是那些在系统用户列表中不可见&#xff0c;但在某些情况下可以进行操作的用户。在内网渗透过程中&#xff0c;当我们拿到shell时&#xff0c;肯定…

某小学AK,SK泄露导致横向到云主机控制台

目录 前言 免责声明 分享声明 个人介绍 某小学AK&#xff0c;SK泄露导致横向到云主机控制台 一、 资产证明 资产证明(1) 资产证明(2) 二、漏洞利用过程 三、漏洞危害 四、修复建议 五、预防措施 前言 免责声明 以下漏洞均已经上报漏洞平台。请勿利用文章内的相关…

Android Jetpack学习系列——Room

关于Room&#xff1a; Room是Android Jetpack组件之一&#xff0c;旨在为Android应用程序提供一种简单、强大且易于使用的本地数据库访问解决方案。 关键特性&#xff1a; 1.基于SQLite封装&#xff1a;Room是基于SQLite数据库引擎构建的&#xff0c;提供了面向对象的API来与…

拉普拉斯金字塔的频谱分析

1. 基本分析 拉普拉斯金字塔分解&#xff0c;主要由以下步骤组成&#xff1a; 对输入图像 L0 进行低通滤波&#xff0c;其中常采用高斯滤波&#xff1b;对低通滤波后的图像进行 1/2 倍率的下采样&#xff0c;这里的下采样通常是指直接取偶行且偶列&#xff08;以 0 开始计&am…

Linux安装部署Tomcat

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ Linux安装部署Tomcat //将tomcat压缩包解压到对…

【计算机网络】常用编码方式+例题(曼彻斯特编码、差分曼彻斯特编码...)

常用编码方式例题 常用编码方式练习画出四种编码20221题342015题342013题34 常用编码方式 练习 画出四种编码 20221题34 这个题目的考察是差分曼彻斯特编码。 差分曼彻斯特编码在每个码元的中间时刻电平都会发生跳变。与曼彻斯特编码不同的是&#xff1a;电平的跳变仅代表时钟…

4G/5G布控球/移动执法仪/智能单兵电力巡检远程视频智能监控方案

一、背景与需求 随着科技的不断进步&#xff0c;视频监控技术已成为电力行业不可或缺的一环。电力行业的巡检及建设工作&#xff0c;因施工现场在人迹罕见的野外或山区&#xff0c;地形复杂多变&#xff0c;安全更是重中之重&#xff0c;现场工作的视频图像需实时传回监管中心…

SpringCloud、SpringBoot、JDK版本对应关系

SpringCloud与SpringBoot 版本 官网说明&#xff1a;https://spring.io/projects/spring-cloud#overview SpringBoot 与 JDK版本关系 发布说明&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes SpringBoot 3.x不再支持JDK1.…

[leetcode] 54. 螺旋矩阵

文章目录 题目描述解题方法模拟java代码复杂度分析 相似题目 题目描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;…

每日两题 / 15. 三数之和 73. 矩阵置零(LeetCode热题100)

15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 先确定一个数t&#xff0c;对于剩下的两个数&#xff0c;要求两数之和为t的负数 三数之和就退化成了两数之和&#xff0c;两数之和可以用双指针 先排序&#xff0c;左右两个指针&#xff0c;指向的数之和大于目标值&…

PCB裸板如何测试?当然是这些....

在印刷电路板制造中&#xff0c;可能会遇见裸板测试&#xff08;主要用于监测PCB在生产过程中可能出现的缺陷&#xff0c;如开路、短路、错位等&#xff0c;以此确保后续装配和使用的顺利进行&#xff09;。本文将介绍几种常用的PCB裸板测试方案&#xff0c;希望对小伙伴们有所…

AD高速板设计(笔记)

Alt左键高亮某个器件或属性&#xff0c;点击任意位置取消高亮。 TP设置旋转角度为45度&#xff0c;即可选中器件按空格旋转时候每次旋转45度。 先画出想要割槽的区域&#xff0c;选中之后TVB即可开槽。 左右翻转电路板&#xff1a;VB DR打开规则设置 UFO对器件进行扇出&#…

LangChain入门:20.探索使用 Self-Ask with Search 代理

引言 在信息爆炸的时代&#xff0c;准确快速地找到事实性问题的答案变得尤为重要。LangChain的Self-Ask with Search代理&#xff08;SELF_ASK_WITH_SEARCH&#xff09;正是为了解决这一挑战而生。本文将深入探讨这一代理的工作原理&#xff0c;并通过实例演示其如何巧妙地处理…

【六】fastapi+vue前后端分离项目

前端代码 https://gitee.com/feiminjie/helloworldfront 后端代码 https://gitee.com/feiminjie/helloworld 整体效果 首页 用例管理页 用例详情页

TM1621E 驱动程序

TM1621E 驱动程序 TM1621E 芯片引脚TM1621E 发送数据TM1621E 发送指令TM1621E 写入时序屏幕真值表完整驱动显示函数 TM1621E 芯片引脚 CS——片选引脚&#xff0c;低电平有效。 WR——数据输入&#xff0c;在WR信号的上升沿&#xff0c;DATA 线上的数据写到TM1621E。 DATA——…