Cookie
- 会话:一次会话中包含多次请求和响应
- 一次会话:浏览器第一次给服务器资源发送请求,会话建立,知道有一方断开为止
- 功能:在一次会话范围内的多次请求间,共享数据
- 方式:
- 客户端会话技术:
Cookie
- 服务器端会话技术:
Session
- 客户端会话技术:
Cookie
客户端会话技术,将数据保存到客户端
- 使用步骤:
- 创建Cookie对象,绑定数据
new Cookie(String name, String value)
- 发送Cookie对象
resp.addCookie(Cookie cookie)
- 获取Cookie,拿到数据
- 获取: Cookie[ ]
req.getCookies()
- 获取: Cookie[ ]
- 创建Cookie对象,绑定数据
- 实现原理:已于响应头
set-cookie
和请求头cookie
实现 - cookie的细节
- 一次请求可以发送多个
cookie
- 可以创建多个Cookie对象,使用
response
调用多次addCookie
方法发送
- 可以创建多个Cookie对象,使用
- 默认情况下,当浏览器关闭后,
cookie
数据被销毁- 持久化存储:
setMaxAge(int seconds)
- 正数:将
cookie
数据写到硬盘文件中,seconds存活事件 - 负数:默认值
- 零:删除
cookie
信息
- 正数:将
- 持久化存储:
- cookie存储中文数据
- 在tomcat8之前cookie不能直接存储中文数据:一般采用URL编码(%E3)
- 在tomcat8之后cookie支持中文数据
- cookie的共享范围
- 同一服务器:
- 默认情况下
cookie
不能被同一服务器下的多个web项目共享 setPath(String path)
-> 设置cookie的获取范围,默认为当前虚拟目录- 如果要共享,则可以将path设置为 “/”
- 默认情况下
- 不同tomcat服务器
setDomain(String path)
:如果设置一级域名相同,那么多个服务器之间cookie可以共享
- 同一服务器:
- 一次请求可以发送多个
cookie
的特点- cookie存储数据在客户端浏览器
- 浏览器对单个cookie的大小有限制(4kb),对同一个域名下的总cookie数量也有限制(20个)
- 作用:
- 存储少量的不太敏感的数据
- 在不登录的情况下,完成服务器对客户端的身份识别
案例
- 记住上一次访问时间需求:
- 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎首次访问。
- 如果不是则提示:欢迎回来,您上次访问的时间为:…