置顶
- 注意事项
- 只能在同一个浏览器创建,同一个浏览器代表同一次会话。比如说你在Chrome中请求了创建Cookie接口,然后你在Firefox中请求遍历Cooke接口,就拿不到。
- 会话技术
- 什么是会话?
- 一次会话?
- 会话结束?
- 直到有一方断开,(关闭浏览器 || 关闭服务器)。
- 会话的功能?
- 共享数据的方式,Java中包含两种会话技术。
- Cookie【客户端】
- Session 【服务器端】
- JSP学习
Cookie
- 概念
- 快速入门,创建Cookie对象,请求URL:talk/JinLuLu
- 响应头(Response Headers)返回,Set-Cookie: msg=JinLuLu

@RequestMapping("/JinLuLu")
public String pasha(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 1.创建Cookie对象
Cookie cookie = new Cookie("msg", "JinLuLu");
// 2.发送Cookie对象
response.addCookie(cookie);
return "创建cookie对象";
}
- 快速入门,遍历拿到Cookie对象,请求URL:talk/YuYaoYao
- 请求头(Request Headers)装载,Cookie: msg=JinLuLu

public String YuYaoYao(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 3.遍历拿到Cookie对象
if (null != request.getCookies()) {
Arrays.stream(request.getCookies()).forEach(item -> System.out.println("Name: " + item.getName() + ", Value: " + item.getValue()));
} else {
System.out.println("Cookie数组为空");
}
return "遍历cookie对象";
}
- 导师田斌讲解:响应头、请求头

- 实现原理
- 基于响应头Set-Cookie和请求头Cookie实现。
- Cookie细节
- 一次可不可以发送多个Cookie呢?
- 可以
- 可以创建多个Cookie对象,调用response.addCookie进行保存。
- Cookie在浏览器中保存多长时间?
- 默认情况下,Cookie保存在浏览器的内存中,当浏览器关闭,Cookie自动销毁。
- 一般情况下,我们都希望在浏览器关闭的情况下,也保存Cookie信息;这里有持久化存储解决方案。
- setMaxAge(int 秒数)
- 整数:将Cookie数据写到硬盘的文件中,持久化储存,Cookie存活时间以秒为单位。
- 负数:代表默认情况。
- 零:删除Cookie信息。
- Cookie能不能存储中文?
- Tomcat8之前不能直接设置中文,Tomcat8之后Cookie支持中文。
- SpringBoot自动集成Tomcat8。
- Cookie共享问题?
- 假设在一个Tomcat服务器中,部署了多个Web项目,那么在这些Web项目中Cookie能不能共享?
- 不同服务器,Cookie是否可以共享?
- 举例:百度、百度贴吧、百度新闻。
- 怎么实现,使用共享域名实现?
- news.baidu.com、tieba.baidu.com
- 一级域名:baidu.com
- 二级域名:news、tieba
- 实现
- setDomain(String path);如果设置一级域名相同。那么多个服务器之间Cookie可以共享!
- cookie.setDomain(".baidu.com"),那么tieba.baidu.com、news .baidu.com中Cookie可以共享!
- Cookie的特点和作用?
- Cookie存储数据在客户端浏览器、不太安全,易丢失、易篡改。
- 浏览器对于单个Cookie的大小有限制(4kb)以及对同一个域名下的总Cookie数量也有限制(20个)。
- 作用
- Cookie一般用于存储少量的不太敏感的数据。
- 在不登录的情况下,完成服务器对客户端的身份识别。