会话cookie&session

本文详细阐述了会话管理的概念,包括用户与网站交互过程中的数据保存方式,对比了cookie和session两种主要技术的特点和使用场景,以及它们的工作流程和API操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

会话:用户打开浏览器访问网站,不论用户打开多少连接,打开多少资源,直到用户关闭浏览器或者关闭服务器,整个过程我们称作一次会话。
会话解决的问题:保存用户访问过程中产生的数据。
会话的技术分类:cookie、session
会话的理解:在浏览器或者服务器开辟一小块空间存放用户访问产生的相应的数据(例如:用户名和密码),不用再频繁访问数据库。
cookie:数据存放在浏览器中
session:数据存放在服务器中(安全性高、时限性)
<---------------------------------------cookie----------------------------------------------------------------->
cookie:浏览器端会话技术
工作流程:浏览器访问服务器,服务器产生一个键值对形式的cookie对象,通过响应(响应头 set-cookie)返回并存储到浏览器中。下次访问服务器时,根据一定的规则携带不同的cookie对象,通过请求(请求头 cookie),服务器得到这些cookie。
如图:
在这里插入图片描述
API:
创建cookie: new cookie(String name String value);
返回给浏览器:response.addCookie(cookie c);
获取cookie:request.getcookie();
通过cookie对象获取cookie名称:getName();
通过cookie对象获取cookie值:getValue();
设置cookie在浏览器存活的时间:setMaxAge(int 秒数);
ps:若秒数为0,删除这个cookie。
设置cookie的路径:setPath(“路径”);
ps:当访问的url包含此cookie的path时,会携带这个cookie,反之不会。
ps:一个路径不能匹配存在重名的cookie,不同路径可以匹配重名的cookie
严重注意:cookie不能跨浏览器,cookie不支持中文。
<---------------------------------------session---------------------------------------------------------------->
session:服务器端会话技术
工作流程:浏览器向服务器发送请求,服务器先判断请求是否带有唯一标识(jsessionId 键值对形式)。如果没有,则在服务器开辟一小块空间存放,并将这个空间地址码(唯一标识的值存放到session池中)。操作session,将session存放到浏览器端。如果有唯一标识,服务器会根据这个标识去session池中查询是否有对应的。若有,则直接操作session对象,并存放到浏览器中。若无,服务器为其创建一个私有内存空间,操作session,将它存放到浏览器端。
ps:唯一标识是以键值对形式存放在请求头中,值为多个时,无法确定那个值。
如图:
在这里插入图片描述
API:
session的获取:request.getSession();
session的属性操作:XxxAttribute();
session的获取id:session对象.getId();
ps:session创建特殊,第一次获取session即执行getSession()便完成创建。
生命周期:创建:Java暂时默认第一次获取session时;
销毁:服务器非正常关闭、超时、手动销毁
ps:tomcat默认时间是30分钟;手动销毁方法 invalidate()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值