来历
- http是无状态的(无法识别你曾来过)
- 客户端数据怎样保证和服务器数据长时间保持一致(购物车)
- 通过会话状态可以让客户端和服务器建立联系
- Servlet中两种会话机制:cookie、session
分类
没有用setMax设定Cookie最大生命周期
生命周期和浏览器相关
保存在内存里面
- 持久cookie:有用setMax设定Cookie最大生命周期
实现原理
- WEB服务器通过HTTP响应信息中增加Set-Cookie响应头字段,将cookie信息发送给浏览器
- 浏览器则通过HTTP请求消息中增加Set-Cookie请求头字段将cookie回传给服务器
注意事项
- 一个cookie只能包含一个key-value信息
- 一个cookie只能标识一种信息
- 一个Web站点可以给一个浏览器发送多个cookie
- 一个浏览器也可以储存多个Web站点发送的cookie
- 浏览器一般只允许存放300个Cookie
- 每个站点最多存放20个Cookie
- 每个Cookie的大小限制为4KB
- cookie是存放在客户端的,不安全
- 浏览器禁用了cookie服务器是写不进去的
使用方式
- 先创建cookie
- 调用response.addCookie(cookie)添加cookie
读取
- 调用request.getCookies()得到cookie数组
- 遍历数组通过name寻找cookie
方法
方法 |
说明 |
new Cookie(name,value) |
必须调用构造器创建Cookie |
setMaxAge(int expiry) |
硬盘的存活时间,以秒为单位,0为立即删除,负数不储存,不设置该方法浏览器关闭后就删除 |
getName() |
得到当前Cookie的名字 |
getValue() |
得到当前Cookie的值 |
setValue(String newValue) |
给当前cookie设置新值 |
setHttpOnly(boolean httpOnly) |
js是否可以访问cookie,true为不能访问 |