Cookie 入门
- 位于 javax.servlet.http 包下
1. HTTP 协议与 Cookie
关于 Cookie
- Cookie 是 HTTP 协议制定的!先由服务器保存 Cookie 到浏览器, 在下次浏览器请求服务器时,
浏览器把上一次请求得到的 Cookie 归还给服务器; - Cookie 的内容是一个键值对, 服务器保存 Cookie 的响应头:
Set-Cookie: aaa=AAA Set-Cookie: bbb=BBB - 浏览器归还 Cookie 的请求头:
Cookie: aaa=AAA; bbb=BBB
- Cookie 是 HTTP 协议制定的!先由服务器保存 Cookie 到浏览器, 在下次浏览器请求服务器时,
HTTP 协议规定(为了保证不给浏览器太大压力):
- 1个Cookie最大 4KB;
- 1个服务器最多向 1 个浏览器保存 20 个 Cookie;
- 1个浏览器最多可以保存 300 个Cookie
2. Cookie 的用途
- 服务器使用 Cookie 来跟踪客户端状态;
3. JavaWeb 中使用 Cookie
- 原始方式
- 使用 response 发送 Set-Cookie 响应头;
- 使用 request 获取 Cookie 请求头;
- 便捷方式
- 使用
response.addCookie()方法向浏览器保存 Cookie; - 使用
request.getCookies()方法获取浏览器归还的 Cookie, 返回 Cookie[];
如果一个Cookie 也没有, 返回 null.
- 使用
// 示例:
// 保存 cookie, 需要首先创建 cookie 对象
Cookie ck2 = new Cookie("aaa","bbb");
response.addCookie(ck2);
// 获取 cookie
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie c : cookies){
out.print(c.getName+"="+c.getValue()+"<br/>");
}
}
4. Cookie 详解
- Cookie 不只有 name 和 value 两个属性;
- Cookie 的 maxAge:
- Cookie 的最大生命, 即 Cookie 可保存的最大时长, 以秒为单位. 使用
Cookie.setMaxAge();设置; maxAge>0: 浏览器会把 Cookie 保存到客户端硬盘上, 有效时长为 maxAge 的值决定;maxAge<0: Cookie 只在浏览器内存中存在, 当用户关闭浏览器时, 浏览器进程结束,
同时 Cookie 也就死亡了; 该值为 Cookie 的默认设置;maxAge=0: 浏览器会马上删除这个 Cookie, 也就是为了删除浏览器存在的同名 Cookie;
- Cookie 的最大生命, 即 Cookie 可保存的最大时长, 以秒为单位. 使用
- Cookie 的 path:
- Cookie 的 path 并不是设置这个 Cookie 在客户端的保存路径!!!
- Cookie 的 path 由服务器创建 Cookie 时设置;
- 当浏览器访问服务器某个路径时, 需要归还哪些 Cookie 给服务器呢? 这是由 Cookie 的 path 决定;
- 浏览器访问服务器的路径, 如果包含某个 Cookie 路径, 那么就归还这个 Cookie
- Cookie 的 path 默认值: 当前访问路径的父路径, 例如在访问
/day11_1/jsps/a.jsp时,
响应的 cookie, 默认的 path 为/day11_1/jsps;
// aCookie.path = /day11_1/; bCookie.path=/day11_1/jsps/; cCookie.path=/day11_1/jsps/cookie;
// 访问: /day11_1/index.jsp 时, 归还: aCookie
// 访问: /day11_1/jsps/a.jsp 时, 归还: aCookie, bCookie
// 访问: /day11_1/jsps/cookie/b.jsp 时, 归还: aCookie, bCookie, cCookie
5. Cookie 的 domain (了解)
- domain 用来指定 Cookie 的域名!! 当多个二级域中共享 Cookie 时才有用.
- 例如:
www.baidu.com zhidao.baidu.com news.baidu.com tieba.baidu.com之间共享 Cookie 时,
可以使用 domain; - 设置domain为:
cookie.setDomain(".baidu.com"); - 设置 path 为:
cookie.setPath("/");
**参考资料:**
- [JavaWeb 视频教程](https://www.bilibili.com/video/av12764736/#page=7)
- [JavaEE 6.0 文档](http://tool.oschina.net/apidocs/apidoc?api=javaEE6)
Cookie 入门的更多相关文章
- cookie入门
据我对cookie诞生背景的了解,cookie是由网景公司创建的,目的就是将用户的数据储存在客户端上.伴随的HTML5的出现,现在又有另外一个解决数据离线储存的方案,就是HTML5中的Web stor ...
- cookie入门与学习
据我对cookie诞生背景的了解,cookie是由网景公司创建的,目的就是将用户的数据储存在客户端上.伴随的HTML5的出现,现在又有另外一个解决数据离线储存的方案,就是HTML5中的Web stor ...
- 20160329javaweb之JSP -cookie入门
一.什么是会话? •会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话过程中要解决的一些问题? •每个用户在使用浏览器与服务器 ...
- Cookie快速入门实践
第一个servlet[比如是CookieDemo01]中的代码如下: import javax.servlet.http.Cookie; //--------省略若干代码----------- pro ...
- javaWeb核心技术第八篇之Cookie和Session
会话技术: 会话是什么? 浏览器和服务器交互,浏览器打开网页访问服务器,会话开始,正常交互. 浏览器关闭,会话结束. 会话能干什么? 会话可以共享数据. Cookie和session将数据保存在不同的 ...
- Web核心之会话技术Cookie&Session
什么是会话技术? http协议是无状态协议.为了满足在多次请求之间数据进行交互,推出了会话技术. 会话概念:一次会话,指的是从客户端和服务器建立起连接开始,到客户端或服务器断开连接为止.中间可能进行多 ...
- 会话技术之cookie(记录当前时间、浏览记录的记录和清除)
cookie 会话技术: 当用户打开浏览器的时候,访问不同的资源,直到用户将浏览器关闭,可以认为这是一次会话. 作用: 因为http协议是一个无状态的协议,它不会记录上一次访问的内容.用户在访问过程中 ...
- Asp.Net Core(.net内核)
Asp.Net Core(.net内核) //----------------Day1----------------一章 Web基本原理 1节课程说明 web窗体--设计界面--加法使用Chr ...
- javaweb——总结
day01XML上 1.XML的作用 2.XML的基本语法 3.DTD约束 4.DTD的基本语法(看懂DTD就ok) 5.XML的解析方式:原理 6.JAXP的DO ...
随机推荐
- 矩阵乘法C语言实现
/* 矩阵乘法C语言实现 Slyar 2009.3.20 */ #include <stdio.h> #include <stdlib.h> /* 给 int 类型定义 ...
- [k8s]kubectl windows配置(kubernetic) && kubectl config set-context使用Kubernetic
参考: https://feisky.gitbooks.io/kubernetes/components/kubectl.html https://kubernetes.io/docs/tasks/t ...
- twemproxy源码分析2——守护进程的创建
twemproxy源码中关于守护进程的创建实现得比较标准,先贴出代码来,然后结合一些资料来分析和列举一些实现守护进程的常用方法,不过不得不说twemproxy的实现确实是不错的,注释都写在了代码中,直 ...
- 本地测试Tomcat配置Https访问
一.tomcat开启HTTPS配置 1) 准备证书 使用jdk工具keytool生成一个ssl测试用证书, 一路按照提示操作输入即可 keytool -genkey -alias tomcat -ke ...
- CCNA2.0笔记_EIGRP
EIGRP特征: •高级距离矢量路由协议 •快速收敛——路由条目不过期,拥有备份路由 •负载均衡 •无类路由 -支持 VLSM 和不连续子网,可关闭自动汇总(建议关闭) •占用带宽小 -触发更新(当拓 ...
- [转]所有编程皆为 Web 编程
Web编程还远远没有达到完美的境地.其实,还有点乱!没错,随便会写点代码的人就能三下两下地搞出一个糟糕的Web应用:也确实,99%的Web 应用都似狗屎一堆.但是,这也意味着,相当“聪明”的程序员们正 ...
- iOS学习笔记10 - Bundle和Info.plist
经常会有需要从应用中搜索并读取一个文件或图片.这时候就会用到如下的语句: NSString *path = [[NSBundle mainBundle] pathForResource:@" ...
- 微信view类型的菜单获取openid范例
<?php //启用session session_start(); //编码 header("Content-type: text/html; charset=utf-8" ...
- ubuntu 用命令行设置chrome的proxy
google-chrome-stable --proxy-server="IP proxy Server:port"
- (转)java Exception层次结构详解
转自:http://www.importnew.com/14688.html 1. JAVA异常层次结构 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程 ...