Cookie & Session
????????持久化存储:setMaxAge(int seconds)
????????????????1. 正数:将 Cookie 数据写到硬盘的文件中,持久化存储。并指定 cookie 存活时间,时间到后,cookie 文件自动失效
????????????????2. 负数:默认值
????????????????3. 零:删除 cookie 信息
3. cookie 存中文
????????在 tomcat 8 之前,cookie 中不能直接存储中文数据
????????在 tomcat 8 之后,cookie 支持中文数据。特殊字符还是不支持,建议使用 URL 编码存储,URL 解码解析
4. cookie 共享范围
假设在一个 tomcat 服务器中,部署了多个 web 项目,那么在这些 web 项目中 cookie 能不能共享?? 默认情况下 cookie 不能共享
**setPath(String path):**设置 cookie 的获取范围
默认情况下,设置当前的虚拟目录
如果要共享,则可以将 path 设置为"/"
不同的 tomcat 服务器间 cookie 共享问题?
**setDomain(String path):**如果设置一级域名相同,那么多个服务器之间 cookie 可以共享
**例:**setDomain(".baidu.com"),那么 tieba.baidu.com 和 news.baidu.com 中 cookie 可以共享
特点:
cookie 存储数据在客户端浏览器
浏览器对于单个 cookie 的大小有限制(4kb) 以及对同一个域名下的总 cookie 数量也有限制(20 个)
作用:
cookie 一般用于存储少量的不太敏感的数据
在不登录的情况下,完成服务器对客户端的身份识别
Session
**概述:**服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。
快速入门:
**获取 HttpSession 对象:**HttpSession session = request.getSession();
使用 HttpSession 对象:
Object getAttribute(String name) ?
void setAttribute(String name, Object value)
void removeAttribute(String name)
<table border="1" cellpadding="1" cellspacing="1"><tbody><tr><td rowspan="2"><strong>实现原理</strong></td><td>Session 的实现是依赖于 Cookie 的</td></tr><tr><td style="text-align:center;"><img alt="" height="321" src="https://img-blog.csdnimg.cn/0f9a2bb9f891464c94dfc3258eaf01b2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAU291dGgucmV0dXJu,size_20,color_FFFFFF,t_70,g_se,x_16" width="698"></td></tr></tbody></table>
细节:
1. 当客户端关闭后,服务器不关闭,两次获取 session 不是同一个
如果需要相同,则可以创建 Cookie,键为 JSESSIONID,设置最大存活时间,让 cookie 持久化保存
?Cookie c = new Cookie("JSESSIONID",session.getId());
?c.setMaxAge(60*60);
?response.addCookie(c);
2. 客户端不关闭,服务器关闭后,两次获取的 session 不是同一个
要确保数据不丢失。tomcat 自动完成以下工作:在 IDEA 中并未完成,只在 tomcat 服务器中完成了
?**session 的钝化:**在服务器正常关闭之前,将 sessio 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 n 对象序列化到硬盘上
**session 的活化:**在服务器启动后,将 session 文件转化为内存中的 session 对象即可
3. session 什么时候被销毁?
1. 服务器关闭
2. session 对象调用 invalidate()
3. session 默认失效时间 30 分钟
评论