目录
- Cookie概述
- 原理图
- 代码测试
- Cookie的时效性
- Cookie的提交路径
Cookie概述
cookie是一种客户端会话技术,cookie由服务端产生,它是服务器存放在浏览器的一小份数据,浏览器以后每次访问该服务器的时候都会将这小份数据携带到服务器去
- 服务端创建cookie,将cookie放入响应对象中,tomcat容器将cookie转化为set-cookie响应头,响应给客户端
- 客户端在收到cookie的响应头时,在下次请求该服务的资源时,会以cookie请求头的形式携带之前收到的cookie
- cookie是一种键值对格式的数据,从tomcat8.5开始可以保存中文,但是不推荐
- 由于cookie是存储于客户端的数据,比较容易暴露,一般不存储一些敏感或者影响安全的数据
原理图
代码测试
创建模块
添加依赖
添加资源组件
部署到tomcat
创建servletA
再次访问
关闭浏览器,重新访问
发现请求头里已经没有cookie
创建servletB
先访问servletA,这样客户端再次发请求时,请求头中就携带cookie
然后访问servletB
重新打开浏览器,直接访问servletB
此时没有cookie会报错
Cookie的时效性
默认情况下Cookie的有效期是一次会话范围内,我们可以通过cookie的setMaxAge()方法让Cookie持久化保存到浏览器上
会话级Cookie
- 服务器端并没有明确指定Cookie的存在时间
- 在浏览器端,Cookie数据存在于内存中
- 只要浏览器还开着,Cookie数据就一直都在
- 浏览器关闭,内存中的Cookie数据就会被释放
持久化Cookie
服务器端明确设置了Cookie的存在时间
在浏览器端,Cookie数据会被保存到硬盘上
Cookie在硬盘上存在的时间根据服务器端限定的时间来管控,不受浏览器关闭的影响
持久化Cookie达到了预设的时间会被释放
cookie.setMaxAge(int expiry)参数单位是秒,表示cookie的持久化时间,如果设置参数为0,表示将浏览器中保存的该cookie删除
这里设置cookie1持久化时间为3分钟
访问servletA,然后关闭浏览器再重新访问
可以看到cookie1还存在
Cookie的提交路径
访问互联网资源时不是每次都需要把所有Cookie带上,访问不同的资源时,可以携带不同的Cookie,我们可以通过Cookie的setPath(String path)对cookie的路径进行设置
可以通过设置路径来控制仅访问某个资源时携带cookie
这里设置cookie1仅访问servletB时候携带
访问其他资源时并不携带