一.会话跟踪技术的概述
会话:
用户打开浏览器,访问网页资源,会话就建立了。直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。
会话跟踪:
一种维护浏览器状态的方法,服务器需要多次识别请求是否来自同一个浏览器,以便在同一次会话中的多次请求共享数据。
通俗理解:例如我打开了某个购物软件,开始了一个会话,然后把一件喜欢的裙子加入了购物车,点击请求,收到响应了,告知商品成功加入购物车。在这个过程中,客户端和服务器建立了一次交互。接着在同一个会话中打开购物车去结算,虽然这是一次新的请求,但由于它是在同一个会话交互中进行的,客户端会在请求中发送会话标识符。服务器能够识别你的会话,并根据之前的请求中的信息,在购物车中显示你所添加的裙子的数据。因此,这就是在一次会话的两次请求中共享数据,确保了连贯的用户体验。
二.为什么要共享数据?
答:因为HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享。
三.实现方式
客户端会话跟踪技术:Cookie
服务端会话跟踪技术:Session
Cookei
四.Cookie基本原理
Cookie的实现是基于HTTP协议的
发送cookie到浏览器:响应头:set-cookie
携带cookie访问服务器:请求头:cookie
五.Cookie基本使用
Cookie:客户端会话技术,将技术保存到客户端,以后每次请求都携带Cookie数据进行访问
①发送Cookei
使用response对象
运行结果
这是edge里面查看的结果
获取数组的一个小技巧 iter
②获取Cookie
使用request对象
运行结果
六.Cookie存活时间
默认情况下,cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
setMaxAge(int seconds):设置cookie存活时间
1.正数:将cookie写入浏览器所在的电脑硬盘,持久化存储,到时间自动删除
2.负数:默认值,cookie随着浏览器的关闭而销毁
3.零:删除对应的cookie
七.cookie存储中文
cookie不能直接存储中文
如果需要存储,则要进行转码:URL编码
Session
一.session是基于cookie的
服务端会话跟踪技术:将数据保存到服务端
JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
如果数据存储在cookie里面,每次访问带来带去,就会造成泄露的隐患,所以使用Sessoin比较好一点
①Session基本使用
存储Session
获取session
运行结果:
二.Session钝化、活化
服务器在重启后,sesion中的数据是否还存在
钝化:在服务器正常关闭后,Tomacat会自动将sesion数据写入到硬盘中
活化:再次启动服务器后,从文件中加载数据到sesion中.
三.sesion销毁
默认情况下,无操作,30分钟自动销毁
四Cookie和Sesion区别
区别:
存储位置:cookie是将数据存储在客户端,sesion将数据存储在服务端
安全性:cookie不安全,sesion安全
数据大小:cookie最大3KB,sesion无大小限制
存储时间:cookie可以长时间存储,sesion默认30分钟
服务器性能:cookie不占用服务器资源,sesion占用服务器资源