J2EE Cookie 基础知识总结
- Tomcat 9
在讲述 Cookie 之前,有必要谈谈 Session
- session 对象是服务器管理的(session对象存储在服务器端)
- session 对象是无状态的(每一个session对象与浏览器不存在直接的对应关系)
- session 需要一个标识来寻找
标识(JSESSIONID ) | |
---|---|
标识是谁分配的? | 服务器 |
标识长成什么样? | 是一个 String(唯一) |
标识存储在哪里? | 存储在浏览器端 |
什么时候存进去的? | 服务器在第一次给浏览器响应的时候携带标识 |
标识具体存储在哪里? | 浏览器端的 Cookie |
请求与响应过程简述
- 先启动服务器(携带项目:有许多资源,比如 Servlet、JSP、Filter…)
- 浏览器主动发送请求(第一次请求时没有 标识)
- 服务器解析请求,根据请求找资源,然后响应信息给浏览器的时候携带有 标识
- 浏览器解析响应信息,并将 标识 存储,然后每一次新请求都携带 标识(正确来说是全部 Cookie 信息,标识 存储在 Cookie 中)
服务器端操作 Cookie
(1)服务器端创建 Cookie
Cookie cookie = new Cookie("key", "value");
response.addCookie(cookie);
- 服务器端响应信息时携带 Cookie 信息
- 下一次浏览器发送请求的时候会携带 Cookie 信息
(2)服务器端获取 Cookie
Cookie[] = request.getCookies();
(3)Cookie 对象常用方法
cookie.getName(); //获取cookie的key
cookie.getValue(); //获取cookie的value
cookie.setMaxAge(int); //设置cookie的失效时间,单位:秒
cookie.getDomain(); //返回cookie的域名
cookie.getPath();
cookie.getVerson();
...
cookie.setMaxAge(int);
默认值是 -1,当前 Session 结束时 Cookie 消失
(4)清除 Cookie
- 浏览器端(不同浏览器,不同的操作方法)
服务器端不能直接删除 Cookie,因为 Cookie 实际上存储在浏览器端,需要迂回告知浏览器端删除
cookie.setMaxAge(0);
response.addCookie(coookie);
JavaScript 操作 Cookie
var cookieObject = document.cookie; //k1=v1;k2=v2;k3=v3
还没有评论,来说两句吧...