`

Web编程之Cookie详解

阅读更多

1.cookie是什么
cookie 是一小文本信息,伴随用户请求在web服务器和浏览器之间传递。用户每次访问站点的时候,web应用程序都可以读取cookie包含的信息。在用户请求网站的某页面时,应用程序不仅返回请求的页面,同时也返回一个包含日期和时间的cookie。该cookie可能会保存在客户端的cookie文件夹中。

(注:cookie和session的区别在于cookie是在客户端保持状态的方案,而session则是在服务器端保持状态的方案。同时,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择。)
2.cookie 的限制
大多数浏览器支持最多可达4096字节(大约4KB)cookie。浏览器还限制了一个站点可以在客户端保存cookie数。大多数浏览器允许每个站点最多放20个cookie。如果试图保存更多的cookie,那么先前的cookie将被删除。还有些浏览器会对来自所有站点cookie总数限制,这个限制通常为300个。
3.cookie 的创建
创建cookie的时候要指定几个值。首先,指定cookie的名字和要保存的值。您也可以创建多个cookie。但每个cookie的名字必须唯一,以便日后取值时识别。(cookie是按名字储存的,所以如创建两个名称相同的cookie,那么最后那个cookie将覆盖前一个。)

4.cookie的持久性
如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口或者会话超时,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
当用户下次访问站点的时候,浏览器会先检查站点的所有cookie, 如果某个cookie已经过期,浏览器不会把这个cookie随页面请求一起发送给服务器,而是删除这个已经过期的cookie。(程序可以在用户磁盘上写入多个cookie。但个每个cookie的过期日期和时间不同。) 

存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。

5.cookie的发送
创建Cookie对象--》设置最大时效--》将Cookie放入到HTTP响应报头

如果你创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie - 存储在浏览器的内存中,用户退出浏览器之后被删除。如果你希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。
cookie的发送需要使用HttpServletResponse的addCookie方法,将cookie插入到一个Set-Cookie HTTP请求报头中。由于这个方法并不修改任何之前指定的Set-Cookie报头,而是创建新的报头,因此我们将这个方法称为是addCookie,而非setCookie。同样要记住响应报头必须在任何文档内容发送到客户端之前设置。

6.cookie的读取
通过调用调用HttpServletRequest的getCookies方法,可获得Cookie对象的数组,对应由HTTP请求中Cookie报头输入的值。对数组进行循环,调用每个cookie的getName方法,直到找到感兴趣的cookie为止。cookie与你的主机(域)相关,而非你的servlet或JSP页面。因而,尽管你的servlet可能只发送了单个cookie,你也可能会得到许多不相关的cookie。
例如:

String cookieName = “userID”; 
    Cookie cookies[] = request.getCookies(); 
    if (cookies!=null){ 
        for(int i=0;i<cookies.length;i++){ 
            Cookie cookie = cookies[i]; 
            if (cookieName.equals(cookie.getName())){ 
                doSomethingWith(cookie.getValue()); 
            } 
        } 
} 

 

分享到:
评论

相关推荐

    go语言web编程

    6.1 session和cookie 6.2 Go如何使用session 6.3 session存储 6.4 预防session劫持 6.5 小结 7.文本文件处理 7.1 XML处理 7.2 JSON处理 7.3 正则处理 7.4 模板处理 7.5 文件操作 7.6 字符串处理 7.7 小结 8.Web服务 ...

    免费超全面的Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结

    Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 JVM虚拟机 JVM特点,结构与执行周期 JVM类加载机制 JVM运行时区数据 JVM执行引擎和垃圾回收 基础语法 理解Java中对象基础Object类 ...

    JavaScript详解(第2版)

    资源名称:JavaScript详解(第2版)内容简介: Javascript是目前最流行和最重要的Web编程语言。《Javascript详解(第2版)》从Javascript的编程结构开始,循序渐进地讲述了Javascript及相关的...

    JavaScript详解(第2版),完整扫描版

    《JavaScript详解(第2版)》主要内容简介:JavaScript是目前最流行和最重要的Web编程语言。《JavaScript详解(第2版)》从JavaScript的编程结构开始,循序渐进地讲述了JavaScript及相关的CSS、W3C DOM、cookie、正则...

    JavaScript详解,第2版(JavaScript by Example,2nd Edition)

    javascript 是目前最流行和最重要的web 编程语言。本书从javascript 的编程结构开始,循序渐进地讲述了javascript 及相关的css、w3c dom、cookie、正则表达式和匹配模式,以及功能强大的ajax。书中采用了大量课堂...

    深入Java Servlet网络编程

    3 Cookie功能 3. 2 使用Java Servlet API进行会话管理 3. 2. 1 HttpSession接口 3. 2. 2 管理会话数据 3. 2. 3 购物车实例 3. 2. 4 会话事件 第4章 生成图像 4. 1 HTTP协议中的MIME类型 4. 2 Servlet向...

    javascript_高级编程

    目录 第 1 章 JavaScript 基础. ...第22 章 JavaScript 服务器端编程. 22.66 预备知识 22.67 实例学习 22.68 功能概述 22.69 脚本详解 第23 章网络安全性. 23.70 安全性破坏的种类 23.71 安全服务

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    内置模块详解之time与datetime模块 内置模块详解之Range模块 内置模块详解之OS模块 内置模块详解之Sys模块 内置模块详解之Shelve模块 内置模块详解之Xml模块 内置模块详解之Configparser模块 内置模块详解之Hashlib...

    Node.js开发实战详解源代码

    利用Myweb框架实现一个简单的Web聊天室;在线聊天室案例和在线中国象棋案例的实现;Node.js的日志模块、curl模块、crontab模块、forever模块、xml模块和邮件发送模块等应用工具。 本书非常适合从事编程开发的学生、...

    Node.js编程中客户端Session的使用详解

    可惜,大多数Web应用使用有状态的内容提供个性化体验。如果你的应用可以登录,就需要记住用户的Session。经典的处理方法是客户端设置包含随机唯一Session标识的Cookie,被标识的Session数据保存到服务端。 扩展有...

    JavaScript详解(第2版)

     11.5 输入设备(控件)编程   11.6 应知应会   练习   第12章 图片与链接   12.1 图片简介   12.1.1 重温HTML中的图片   12.1.2 JavaScript中的image对象   12.2 回顾链接   12.3 图片地图...

    ASP.NET 2.0 跟我一起学Visual.Studio2005 1/9

    跟我一起学Visual Studio 2005(18):Crystal Report篇之公式详解 (Level 200) 课程简介:公式是Crystal Report中不可缺少的一个部分,利用公式我们可以做很多自定义的计算和操作。本节课我们将针对公式进行详细介绍...

    ASP.NET 2.0 跟我一起学Visual.Studio2005 2/9

    跟我一起学Visual Studio 2005(18):Crystal Report篇之公式详解 (Level 200) 课程简介:公式是Crystal Report中不可缺少的一个部分,利用公式我们可以做很多自定义的计算和操作。本节课我们将针对公式进行详细介绍...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2.session①-session原理介绍 保存session 9-23 3.session②-...

    (全)传智播客PHP就业班视频完整课程

    9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2.session①-session原理介绍 保存session 9-23 3.session②-...

    史上最全传智播客PHP就业班视频课,8月份视频

    9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2.session①-session原理介绍 保存session 9-23 3.session②-...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    9-21 4.cookie①-cookie原理介绍 创建cookie 获取cookie 9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2....

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-21 5.cookie②-更新cookie 删除cookie cookie运用案例 9-21 6.cookie③-雇员管理系统使用cookie技术 1.显示上传登录时间2.保留登录id 9-23 1回顾 9-23 2.session①-session原理介绍 保存session 9-23 3.session②-...

    python-learning.zip

    21-30.Web前端概述.md 31-35.玩转Linux操作系统.md 36.关系型数据库和MySQL概述md 37.SQL详解md38深入MySQL.md 39.Python程序接入MySQL数据库.md 40.大数据平台和HiveSQL.md 41.Django快速上手.md 42.深入模型.md 43...

    python入门到高级全栈工程师培训 第3期 附课件代码

    02 Form组件之详解字段 03 Form组件之常用标签示例 04 Form组件之动态绑定数据 第60章 Django序列化共6课 第61章 01 上节内容回顾 02 上传文件 03 制作上传按钮 04 Form组件上传文件 05 上传相关内容梳理 06 ...

Global site tag (gtag.js) - Google Analytics