JAVAEE_Servlet_21_Cookie
Cookie
* Cookie 是什么?
- Cookie翻译过来是曲奇饼干的意思
- Cookie可以保存回话状态,但是这个会话状态是保存在客户端上的,只要清除Cookie,或者 Cookie失效,这个会话状态就没有了
- Cookie是保存在浏览器客户端上的,可以存在浏览器客户端的以下位置上:
1. Cookie可以保存在浏览器的缓存中,浏览器关闭Cookie消失
2. Cookie也可以保存在客户端的硬盘文件中,浏览器关闭Cookie还在,除非清除cookie或者Cookie失效了
* Cookie只有在javaWeb中有吗?
- Cookie不只是存在于JavaWeb中,只要是Web开发,只要是基于HTTP协议,就会有Cookie的存在
- Cookie这种机制,是HTTP协议规定的,专门用来保存会话状态.
* Cookie所实现的功能常见的有什么?
- 在客户端保存购物车商品状态
- 十天内免登录
...
* 在java 中Cookie被当做类来处理,使用new运算符可以创建Cookie对象。
* Cookie由两部分组成,分别是cookie的 name 和 value,两者都是字符串类型数据。
* 怎么创建Cookie?
- Cookie cookie01= new Cookie ("String Cookiename", "String CookieValue");
//创建Cookie对象
Cookie cookie01= new Cookie("username", "morty");
Cookie cookie02= new Cookie("password", "123456");
* 怎么将发送cookie发送给浏览器?
- 默认情况下,浏览器将Cookie对象发送给浏览器后,浏览器将Cookie保存在了浏览器的缓存中,只要浏览器不关闭Cookie一直存在,并且有效。浏览器关闭后cookie失效。
- 服务器可以一次向浏览器发送多个cookie。
- 服务器发送Cookie到浏览器的方法: response.addCookie(cookieName);
// 将cookie对象发送给浏览器
response.addCookie(cookie01);
response.addCookie(cookie02);
* 在浏览器缓存中保存着的Cookie什么时候会发给服务器呢?
- 浏览器会不会将缓存中的Cookie发送给服务器,和请求路径有关系,请求的路径和Cookie是关联在一起的,不同的路径会发送不同的Cookie给服务器。
- 例如:在浏览器地址栏输入京东的请求路径,浏览器就会将与京东请求路径相关联的Cookie发送给服务器。
* 默认情况下Cookie是和什么路径绑定在一起的呢?
- 我们是在 /myWeb/CreateAndSendCookieToBrowser下发送的Cookie给浏览器
- 那么这个Cookie就会和myWeb/这个路径保存在一起,所以以后只要输入的请求路径带有myWeb/,浏览器就会将缓存中的Cookie提交给服务器
* 其实和Cookie所绑定在一起的路径是可以设置的,可以通过java程序进行设置,从而保证Cookie能够和某个特定的路径绑定在一起
- 如何设置Cookie的绑定路径呢?
//设置Cookie的关联路径
cookie1.setPath(request.getContextPath()+"/king");
cookie2.setPath(request.getContextPath()+"/king");
> 此时Cookie将和 “ /myWeb/king ” 整个完整的路径绑定在一起,只有发送包含“/myWeb/king”的请求路径,浏览器才会提交Cookie给服务器。
* 如何设置将Cookie保存在浏览器客户端的硬盘上呢?
- 如果没有设置Cookie的有效时间,那么Cookie默认保存在浏览器的缓存中,只要浏览器关闭Cookie就会消失。
- 我们可以设置Cookie的有效时间,设置了有效时间大于0,那么Cookie就会自动保存在客户端浏览器的硬盘上,有效时长必须大于0。有效时长到期后,Cookie自动失效。
设置Cookie有效时长 < 0 不会被存储在硬盘中
设置Cookie有效时长 = 0 Cookie 会被直接删除
设置Cookie有效时长 > 0 Cookie存储在浏览器客户端硬盘文件中
- 具体设置Cookie有效时长代码:
// 设置cookie的有效时长
cookie1.setMaxAge(60*60);
cookie2.setMaxAge(60*60*24);
* 浏览器提交Cookie给服务器,服务器怎么接收?
- 使用 Cookie[] request.getCookies() 方法, 从request获取Cookies, 返回一个Cookie数组。
//接收浏览器提交给服务器的Cookie
Cookie[] cookies=request.getCookies();
//输出Cookie
int i=1;
if(cookies!=null){
for (Cookie cookie:cookies) {
String cookieName=cookie.getName(); //获取cookie的name
String cookieValue=cookie.getValue(); // 获取cookie的value
System.out.println("第"+i+"个Cookie信息"+cookieName+"="+cookieValue);
i++;
}
}
}
* 浏览器是可以禁用Cookie的,什么意思?
- 表示服务器发送过来的cookie,客户端浏览器不接收。
- 服务器还是会进行发送的,只不过是浏览器不接收了。
* Cookie代码总结:
```
public class CookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建Cookie对象
Cookie cookie1=new Cookie("userName","Morty");
Cookie cookie2=new Cookie("password","123456");
Cookie cookie3=new Cookie("email","1213@lkd");
//设置Cookie的关联路径
cookie1.setPath(request.getContextPath());
cookie2.setPath(request.getContextPath());
//将Cookie保存在浏览器客户端的硬盘文件中
cookie1.setMaxAge(60*60*24);
cookie2.setMaxAge(60*60*24);
//将Cookie发送给浏览器客户端
response.addCookie(cookie1);
response.addCookie(cookie2);
//浏览器将Cookie提交给服务器,那么服务器怎么接受Cookie呢?
Cookie[] cookies=request.getCookies();
// 遍历输出Cookie
if(cookies!=null){
for (Cookie cookie:cookies) {
System.out.println(cookie);
}
}
}
JAVAEE_Servlet_21_Cookie的更多相关文章
- Django集成Markdown编辑器【附源码】
专注内容写作的你一定不要错过markdown 简单介绍 markdown是一种标记语言,通过简单的标记语法可以使普通的文本内容具有一定的格式,使用非常简单,学习成本极低 目前各大Blog平台都已支持m ...
随机推荐
- 死磕Spring之IoC篇 - Bean 的“前身”
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- Django和Ueditor自定义存储上传文件的文件名
django台后默认上传文件名 在不使用分布式文件存储系统等第三方文件存储时,django使用默认的后台ImageField和FileField上传文件名默认使用原文件名,当出现同名时会在后面追加下随 ...
- Spring Boot集成Springfox Swagger3和简单应用
摘要:Springfox Swagger可以动态生成 API 接口供前后端进行交互和在线调试接口,Spring Boot 框架是目前非常流行的微服务框架,所以,在Spring Boot 项目中集成Sp ...
- 你要是还学不会,请提刀来见 Typora+PicGo+Gitee + node.js 打造个人高效稳定优雅图床
你要是还学不会,请提刀来见 Typora+PicGo+Gitee + node.js 打造个人高效稳定优雅图床 经过前面两弹的介绍,相信大家对图床都不陌生了吧, 但是小魔童觉得这样做法还是不方便,使用 ...
- 从头捋了一遍 Java 代理机制,收获颇丰
尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...
- CF1491C Pekora and Trampoline 题解
题目链接 比赛时只想到了 \(\mathcal O(n^3)\) 的暴力做法,官方题解是 \(\mathcal O(n^2)\) ,并且是可以优化为 \(\mathcal O(n)\) 的(贪心+ ...
- 基于jQuery1.4.2轻量级的弹出窗口jQuery插件wBox 1.0
Box特点 背景透明度可以根据实际情况进行调节 可以根据需要添加wBox标题 支持callback函数 支持html内容自定义 支持在wBox显示#ID的内容 支持Ajax页面内容 支持iFrame ...
- JDK的下载、安装与配置
一.JDK的下载 1.JDK下载地址:https://www.oracle.com/cn/java/technologies/javase-downloads.html 2.登录Oralce官网:ht ...
- WPF 基础 - Binding 的源与路径
1. 源与路径 把控件作为 binding 源与 binding 标记拓展: 控制 Binding 的方向及数据更新: Binding 的路径 Path: 没有路径的 Binding: 为 Bindi ...
- java异常的 理解
1.体系结构 java.lang.Object |----java.lang.Throwable |-------java.lang.Error:错误,java程序对此无能为力,不显式的处理 |--- ...