cookie失效时间_2020应聘阿里,必须知道的Cookie和Session的底层实现原理!你掌握了吗?...

a338e3ddb60308dde3a39d15a35525c5.png

一、Cookie

Cookie的特性:会话数据保存在浏览器客户端

Cookie的底层实现原理:

1)服务器创建cookie对象,把会话数据存储到cookie对象中。

new Cookie("name","value");

2)服务器发送cookie信息到浏览器

response.addCookie(cookie);

3)浏览器从响应头中得到服务器发送的Cookie然后保存到浏览器本地。

原理图如下所示:

c66cd53365742d11e782e43f2a37ffc4.png

服务器怎样获取Cookie?

浏览器在下次访问服务器时,会将本地存放的Cookie信息通过请求头的方式发送给服务器

Cookie易错点:

1)Cookie不能跨浏览器

2)Cookie默认关闭浏览器失效。如果不想让Cookie默认关闭浏览器失效,可以使用setMaxAge(int expiry) 来设置有效时间

正整数:表示保存的时间,以秒为单位

负整数:表示浏览器关闭cookie就失效了!

零:表示删除同名的cookie数据

3)Cookie数据类型只能保存非中文字符串类型。可以保存多个cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

4)Cookie的不可跨域名性

二、Session

Session的特性:会话数据保存在服务器端

Session底层实现原理:

服务器创建一个session之后,会在响应头里面将sessionId返回给浏览器。浏览器从响应头中获取sessionId,然后保存在浏览器本地。

具体步骤如下:

1)服务器创建session对象

HttpSession session=req.getSession();

默认是true,表示如果没有session,就会创建一个session

如果是false,表示如果没有找到session,不会创建一个session

2)设置session对象

void setMaxInactiveInterval(int interval) : 设置session的有效时间

3)保存会话数据到session对象

void setAttribute(java.lang.String name, java.lang.Object value)

4)服务器通过响应头将sessionId返回给浏览器

5)浏览器从响应头中获取sessionId保存到本地硬盘

原理图如下所示:

96fa6ee931331ac57e4366dca7b07aa8.png

服务器怎样获取session?

浏览器在下次访问服务器的时候,会将本地存放的sessionId通过请求头的方式发送给服务器

b7dd94c01ecb106a76d4c28eb8efdabb.png

Session易错点:

1)两个getSession方法:

getSession(true) / getSession() : 创建或得到session对象,如果没有匹配的sessionId,自动创建新的session对象。

getSession(false): 得到session对象,如果没有匹配的sessionId,不创建

2)session默认情况下30分钟服务器自动回收。如果想要修改session回收时间可以用setMaxInactiveInterval(int interval)

3)关闭浏览器session不会失效(因为session保存在服务器端),但是sessionId会失效(因为sessionId保存在浏览器端)

————————————————

版权声明:本文为CSDN博主「有头发的代码匠」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Mr_wxc/article/details/102636559

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值