session和cookie联合使用时的注意事项

shuyepl 2022-07-15 13:38:13
Categories: Tags:

前言

今天试着自己回想杜老师构建 Javaweb 视频中的项目创建过程,想在里面添加一个登录功能,然后在使用 cookie 实现十天免登录功能的时候出现了一点问题,具体的问题是:在第一次打开项目欢迎页面的时候,勾选上十天免登录并登录该系统,然后直接关闭浏览器,因为我在程序中设置了 cookie ,将用户的信息保存在本地,所以在第二次我打开浏览器,输入项目连接并回车的时候,本应该自动登录并加载该项目的操作页面的,但实际的情况是,报错了,(⊙o⊙)… ,说是找不到 session 对象,session 对象为 null ,我就很奇怪了,我关闭浏览器到我再次打开浏览器之间的时间也就几分钟之内的事吧,我设置了 session 对象的超时销毁时间是 30 分钟,在服务器中应该还有这个 session 对象的呀,怎么就变成 null 了。

原因

之后去找了一下资料,看了一些关于 session 和 cookie 的文章,终于找到了问题,这个问题其实很简单,就是我没有将 sessionid 保存到本地中,它默认保存到了浏览器的缓存中了,当我关闭浏览器的时候,这个缓存就被清除了,没有了 sessionid ,那也就没有办法找到之前保存在服务器端的对应 session 了,而且我设置的获取 session 的语句是 request.getSession(false) ,在没有获取到对应 session 的情况下,返回值是 null ,所以,现在一切都解释通了,那我为什么会犯这种错误呢 。

反思

我之前跟着老杜的视频在看的时候,session 的笔记和 cookie 的笔记是分开来写的,也就是说这两部分的内容在我脑子里面是分开的,我没有将两部分统一起来,而这两部分内容在使用的时候是需要联合起来考虑一些问题的,这也就导致了今天的这个问题。