JavaWeb中Cookie会话管理,理解Http无状态处理机制

时间:2022-03-25 13:38:39

上一部分我们提到了Session会话管理,这次我们再补充一个Cookie会话管理

首先我们看一下Cookie在Web中的定义:

HTTP允许一个Web服务器在客户机器上存储信息

需要注意的几个特点:

Cookie是有Web服务器的响应发出的

JavaWeb中Cookie会话管理,理解Http无状态处理机制

Cookie主要包括:名字、值、过期时间、路径和域。域和路径构成了Cookie的作用范围

JavaWeb中Cookie会话管理,理解Http无状态处理机制

Cookie存储在客户的机器上,Session存储在服务器端

JavaWeb中Cookie会话管理,理解Http无状态处理机制JavaWeb中Cookie会话管理,理解Http无状态处理机制

我们做一个小练习:写两个Servlet,第一个访问响应到一个Cookie,第二次访问另外一个Sevlet,将其显示出来

JavaWeb中Cookie会话管理,理解Http无状态处理机制JavaWeb中Cookie会话管理,理解Http无状态处理机制

然后我们部署访问,点击提交

JavaWeb中Cookie会话管理,理解Http无状态处理机制

此时进入第一个Servlet,响应一个cookie,我们按F12打开开发工具,就可以看到我们的cookie了

JavaWeb中Cookie会话管理,理解Http无状态处理机制

我们再访问我们的第二个Servlet

JavaWeb中Cookie会话管理,理解Http无状态处理机制

回车,可以看到服务器中显示了内容

JavaWeb中Cookie会话管理,理解Http无状态处理机制

JSESSIONID是我们前面的练习,带出来的数值,可以暂时不用考虑,此时可以看到Cookie实际上是存在客户端的

我们画个图

JavaWeb中Cookie会话管理,理解Http无状态处理机制

如果不设置过期时间,则表示这个Cookie的生命周期为浏览器会话期间,只要关闭浏览器窗口,Cookie就消失了。生命期为浏览器会话期的Cookie被称为会话Cookie,会话Cookie一般不存储在硬盘上,而是在内存中。如果设置过了过期时间,浏览器就会把Cookie保存在硬盘上,关闭再打开浏览器这些Cookie仍然有效

怎么理解呢?

我们访问

JavaWeb中Cookie会话管理,理解Http无状态处理机制

然后再访问第二个servlet

JavaWeb中Cookie会话管理,理解Http无状态处理机制

此时是可以看到我们的cookie的

JavaWeb中Cookie会话管理,理解Http无状态处理机制

但是如果我们关闭浏览器,再访问

JavaWeb中Cookie会话管理,理解Http无状态处理机制

此时服务器是没有的

JavaWeb中Cookie会话管理,理解Http无状态处理机制

就是说我们关闭了浏览器,Cookie就过期了

如果我们设置了过期时间,过期一天

JavaWeb中Cookie会话管理,理解Http无状态处理机制

此时访问浏览器

JavaWeb中Cookie会话管理,理解Http无状态处理机制

获取cookie之后,关闭浏览器,再访问

JavaWeb中Cookie会话管理,理解Http无状态处理机制

可以看到我们的cookie了

JavaWeb中Cookie会话管理,理解Http无状态处理机制

我们来查看下存在我们电脑上的cookie

我是用的是360极速浏览器,点击工具的选项

JavaWeb中Cookie会话管理,理解Http无状态处理机制

选择所有cookie

JavaWeb中Cookie会话管理,理解Http无状态处理机制

可以看到我们的过期时间

JavaWeb中Cookie会话管理,理解Http无状态处理机制