问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

会话跟踪技术Session和Cookie

发布网友 发布时间:2024-09-25 15:15

我来回答

1个回答

热心网友 时间:2024-10-05 12:23

本文介绍Http请求中会话跟踪技术Session和Cookie的使用。

概念介绍

由于http协议最初被设计成是无状态的,所以用户每次发起http请求都会新起一个连接(即便是同一个用户,同一个域名),这样十分消耗资源,所以需要有一种技术来处理这个问题,会话跟踪就是这种技术。

会话:用户打开浏览器,访问服务器资源,会话建立,直到有一方断开,会话结束。一次会话中可以包含多次请求和响应。

会话跟踪:一种维护浏览器状态的方法,服务器需要识别请求是否来自于同一个浏览器,以便于在同一次会话中共享数据,用于提升性能

会话跟踪技术实现方式:

客户端:Cookie

服务端:Session

关于Cookie

Cookie是使用在客户端的一种会话跟踪技术,会将数据保存到客户端,以后每次请求都携带Cookie进行数据访问。

举个例子,我们在用户登录时服务端会生成token,然后服务端把token设置到cookie中,客户端后续对同一个域名的请求都会带上这个Cookie,默认情况下当用户关闭浏览器(即会话断开后)cookie会失效。

Servlet中Response设置Cookie代码如下:

resp?.addCookie(Cookie("名字","值"))

Servlet获取客户端Cookie代码如下:

val?cookies?=?req.cookies?//Cookie对象数组cookies.forEach?{?????val?name?=?it.name????val?value?=?it.value}Cookie原理

Cookie实现是基于http协议,主要是用了http协议中的headers

响应头:set-cookie

请求头:cookie

服务端会往响应头里加一个set-cookie字段,浏览器会在请求头里加一个cookie字段,下面介绍Cookie的一些细节。

Cookie的一些细节

Cookie存活时间

正数:Cookie存入电脑硬盘,持久化存储,到期自动删除

负数:Cookie仅存在浏览器内存里,浏览器关闭时被销毁

0:删除对应Cookie

默认情况下,Cookie存储在浏览器内存里,当浏览器关闭,内存释放,Cookie会被销毁

可以使用setCookie(int seconds)设置Cookie的存活时间

Cookie如何存储中文

设置Cookie时先转码,之后取的时候在反编码即可(一般使用URLEncoder类)

关于Session

Session是一种服务端会话跟踪技术,用于将数据存储到服务端.

Session的使用

JavaEE提供HttpSession接口来实现Session的具体功能,HttpSession有以下几个方法:

val?session?=?req.session//获取数据session.getAttribute("")//设置数据session.setAttribute("","")//移除数据session.removeAttribute("")Session的原理

Session是基于Cookie实现的,在同一次会话中cookie中的JSESSIONID是同一个。

Tomcat服务器会自动处理sessionid过程

同一个域名服务器下Servlet的请求获取到的session对象是同一个。

Session使用细节

Session的钝化和活化

服务器重启后,Session中的数据是否还在?

钝化:服务器正常关闭时会把session的信息存储到硬盘文件里

活化:再次启动服务器会从文件中加载数据到session中

浏览器关闭后再打开是一次新的会话

Session销毁

默认情况保存30分钟,这个值可以在web.xml中使用<session-config>下的<session-timeout>属性配置(默认单位是分钟)

手动调用Session对象的invalidate方法(用户退出时可以使用)

总结

Session与Cookie都是用来一次会话里多次请求共享数据的

区别:

存储位置:Cookie在客户端,Session在服务端

安全性:Cookie不安全,Session安全

数据大小:Cookie最大3KB,Session无限制

存储时间:Cookie可以存很久,Session默认30分钟

服务器性能:Cookie不占服务端资源,Session占用资源

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女方起诉离婚如何争取孩子抚养权 起诉离婚怎么争夺子女抚养权 m158b打印机按键说明 喷码机维修哪家好? 美国芯片法案的签署,对哪些行业影响至深? 有关场强正负的问题 场强矢量叠加的正负是怎么看的 手机如何照明 比较便宜的物流 我不小心把内存里的照片和视频删了怎么恢复呢 Web基础与HTTP协议 ...在线程里面做了一个TCP发送数据,三秒钟发一次,当我不想发送时,销毁... ...一文读懂主流视频直播系统的推拉流架构、传输协议等 粥的糖分是否比米饭更高? 栖霞区有哪些大学 云顶之弈9.24雷霆守护神阵容怎么搭配_云顶之弈雷霆守护神阵容搭配攻略... 云顶之弈9.24版本娜美海洋法阵容怎么搭配_云顶之弈娜美海洋法阵容搭配... 云顶之弈9.24B极地六狂战阵容攻略 新版极地六狂战搭配及运营详解-新 ... 云顶之弈9.24b雷霆守护刺怎么玩介绍_云顶之弈9.24b雷霆守护刺怎么玩是... 六年级我爱祖国作文500字 黑色痣与黑色素瘤怎么区别 脚趾甲内发黑怎么办 孕妇感冒能吃板蓝根吗怀孕前三个月是胎儿重要 pvz 小游戏攻略-植物大战僵尸小游戏攻略 怀孕快三个月了吃板蓝根冲剂会不会对我的宝宝有影响 计算机技能软件有哪些 植物大战僵尸怎么玩僵尸模式 植物大战僵尸小游戏攻略? 笨博士大战僵尸2小游戏操作指南 我爱你,宝贝。我们不要分开好吗?。用英语怎么说 ...的同事连累。现在 领导认为我是那种靠不住的人,怎么办? 你好粤语怎么说? 捷安特,喜德胜自行车哪个牌子的质量好 捷安特自行车好还是喜德盛好 重庆大学自考本科有哪些专业 重庆哪些大学有自考 求好看的BL古文 校园文 生活文~个人很喜欢年下腹黑攻~而且最好要虐心一... 重庆大学成人自考报名条件 精神世界丰富是什么体验? 怎样的人精神世界特别丰富? 云顶之弈秘术召唤沙漠刺怎么玩_10.1秘术召唤沙漠刺阵容搭配玩法攻略 EMS物流从杭州到山东潍坊寒亭需要几天 云顶之弈雷霆沙漠召唤刺阵容搭配 现在EMS物流从杭州到山东潍坊寒亭几天到 云顶之弈月蚀沙漠刺客阵容怎么玩 EMS从北京发到潍坊寒亭,几天能到? 云顶之弈10.3沙漠刺客怎么玩_10.3沙漠刺客最强阵容攻略 云顶之弈新版本沙漠剑刺阵容搭配 香菜的功效与作用好处 香菜的作用与功效