• 位于 javax.servlet.http 包下

1. HTTP 协议与 Cookie

  1. 关于 Cookie

    • Cookie 是 HTTP 协议制定的!先由服务器保存 Cookie 到浏览器, 在下次浏览器请求服务器时,

      浏览器把上一次请求得到的 Cookie 归还给服务器;
    • Cookie 的内容是一个键值对, 服务器保存 Cookie 的响应头:

      Set-Cookie: aaa=AAA Set-Cookie: bbb=BBB
    • 浏览器归还 Cookie 的请求头: Cookie: aaa=AAA; bbb=BBB
  2. HTTP 协议规定(为了保证不给浏览器太大压力):

    • 1个Cookie最大 4KB;
    • 1个服务器最多向 1 个浏览器保存 20 个 Cookie;
    • 1个浏览器最多可以保存 300 个Cookie

2. Cookie 的用途

  • 服务器使用 Cookie 来跟踪客户端状态;

3. JavaWeb 中使用 Cookie

  1. 原始方式

    • 使用 response 发送 Set-Cookie 响应头;
    • 使用 request 获取 Cookie 请求头;
  2. 便捷方式
    • 使用 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 详解

  1. Cookie 不只有 name 和 value 两个属性;
  2. Cookie 的 maxAge:
    • Cookie 的最大生命, 即 Cookie 可保存的最大时长, 以秒为单位. 使用 Cookie.setMaxAge(); 设置;
    • maxAge>0 : 浏览器会把 Cookie 保存到客户端硬盘上, 有效时长为 maxAge 的值决定;
    • maxAge<0 : Cookie 只在浏览器内存中存在, 当用户关闭浏览器时, 浏览器进程结束,

      同时 Cookie 也就死亡了; 该值为 Cookie 的默认设置;
    • maxAge=0 : 浏览器会马上删除这个 Cookie, 也就是为了删除浏览器存在的同名 Cookie;
  3. 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 入门的更多相关文章

  1. cookie入门

    据我对cookie诞生背景的了解,cookie是由网景公司创建的,目的就是将用户的数据储存在客户端上.伴随的HTML5的出现,现在又有另外一个解决数据离线储存的方案,就是HTML5中的Web stor ...

  2. cookie入门与学习

    据我对cookie诞生背景的了解,cookie是由网景公司创建的,目的就是将用户的数据储存在客户端上.伴随的HTML5的出现,现在又有另外一个解决数据离线储存的方案,就是HTML5中的Web stor ...

  3. 20160329javaweb之JSP -cookie入门

    一.什么是会话? •会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话过程中要解决的一些问题? •每个用户在使用浏览器与服务器 ...

  4. Cookie快速入门实践

    第一个servlet[比如是CookieDemo01]中的代码如下: import javax.servlet.http.Cookie; //--------省略若干代码----------- pro ...

  5. javaWeb核心技术第八篇之Cookie和Session

    会话技术: 会话是什么? 浏览器和服务器交互,浏览器打开网页访问服务器,会话开始,正常交互. 浏览器关闭,会话结束. 会话能干什么? 会话可以共享数据. Cookie和session将数据保存在不同的 ...

  6. Web核心之会话技术Cookie&Session

    什么是会话技术? http协议是无状态协议.为了满足在多次请求之间数据进行交互,推出了会话技术. 会话概念:一次会话,指的是从客户端和服务器建立起连接开始,到客户端或服务器断开连接为止.中间可能进行多 ...

  7. 会话技术之cookie(记录当前时间、浏览记录的记录和清除)

    cookie 会话技术: 当用户打开浏览器的时候,访问不同的资源,直到用户将浏览器关闭,可以认为这是一次会话. 作用: 因为http协议是一个无状态的协议,它不会记录上一次访问的内容.用户在访问过程中 ...

  8. Asp.Net Core(.net内核)

    Asp.Net Core(.net内核) //----------------Day1----------------一章    Web基本原理 1节课程说明 web窗体--设计界面--加法使用Chr ...

  9. javaweb——总结

    day01XML上    1.XML的作用    2.XML的基本语法    3.DTD约束    4.DTD的基本语法(看懂DTD就ok)    5.XML的解析方式:原理    6.JAXP的DO ...

随机推荐

  1. app store上传图片显示错误:未能创建 屏幕快照

    在iTunes Connect中加入一个app后.加入屏幕快照时,依照要求的尺寸上传照片成功,可是在保存的时候提示"未能创建Screenshots for 4-inch iPhone5 an ...

  2. [转]Ubuntu 12.04.3 LTS 安装 Qt5.1.1

    参考文档如下: http://blog.csdn.net/astonqa/article/details/9767043 http://www.qtcn.org/bbs/apps.php?q=diar ...

  3. iOS swift String 换行显示

    在oc中换行的方式 NSString *str = @" aaaaa \ bbbbb \ cccc \ "; swift中这种方式不可用 ,swift中换行采用新的方双三引号 &q ...

  4. linux学习笔记15--命令locater、slocate

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...

  5. [转载] 关于mkvtoolnix批量处理的

    需要的工具:mkvtoolnix.记事本 案例介绍:用文件A的视频+文件B的音频+字幕合成新MKV,在文件列表中,按A.B.C顺序排列.其中A与B都是Mkv格式,所以A与B不能放在同一个文件夹中(就算 ...

  6. centos单机安装Hadoop2.6

    一,安装环境 硬件:虚拟机 操作系统:Centos 6.4 64位 IP:10.51.121.10 主机名:datanode-4 安装用户:root 二,安装JDK 安装JDK1.6或者以上版本.这里 ...

  7. shell变量/环境变量和set/env/export用法_转

    转自:shell环境变量以及set,env,export的区别 一.shell环境变量的分类以及set env export的区别: set:显示(设置)shell变量,包括的私有变量以及用户变量.不 ...

  8. 页面表单里的图片上传ENCTYPE="multipart/form-data"

    ENCTYPE="multipart/form-data"用于表单里有图片上传. <form action="<%=basePath %>asyUplo ...

  9. HDU 2254 奥运(矩阵高速幂+二分等比序列求和)

    HDU 2254 奥运(矩阵高速幂+二分等比序列求和) ACM 题目地址:HDU 2254 奥运 题意:  中问题不解释. 分析:  依据floyd的算法,矩阵的k次方表示这个矩阵走了k步.  所以k ...

  10. Oracle的REGEXP_INSTR函数简单使用方法

    REGEXP_INSTR函数让你搜索一个正則表達式模式字符串. 函数使用输入字符集定义的字符进行字符串的计算. 它返回一个整数,指示開始或结束匹配的子位置.这取决于return_option參数的值. ...