`

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服务 ...

    PHP网络编程技术详解 随书源代码

    《PHP网络编程技术详解》这本书深入浅出地探讨了PHP在网络编程中的应用,涵盖了从基础概念到高级技术的广泛知识领域。PHP作为一种流行的服务器端脚本语言,常用于构建动态网站和Web应用程序。通过这本书,读者可以...

    Go WEB 编程

    - **session和cookie**:解释session和cookie的区别及其在Web开发中的作用。 - **Go如何使用session**:演示如何在Go中实现session管理。 - **session存储**:讨论常见的session存储方案,如内存、文件系统、数据库...

    在Java的web编程中关于session技术的使用详解

    在Java的Web编程中,Session技术扮演着至关重要的角色,它是服务器端用来跟踪用户状态的一种机制。当Web应用无法在无状态的HTTP协议中保持用户信息时,Session就显得尤为重要。下面将详细介绍Session的工作原理、...

    Web.config配置详解

    ### Web.config配置详解 #### 一、Web.config 文件概述 Web.config 文件是 ASP.NET 应用程序中的核心配置文件,采用 XML 格式编写。它主要用于存储与 ASP.NET Web 应用程序相关的各种配置信息。每个 ASP.NET Web ...

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

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

    PHP网络编程技术详解 完整版 pdf + 源码

    6. **session和cookie**:session和cookie是Web应用程序中管理用户状态的重要手段。PHP内置了对session和cookie的支持,可以方便地设置和读取它们,实现用户登录状态的维护。 7. **面向对象编程**:PHP 5引入了完整...

    java web开发详解源代码

    Java Web开发是一个涵盖广泛的主题,包括使用Java语言进行服务器端编程、网页交互、数据库操作以及应用框架的使用等。在这个"java web开发详解源代码"的压缩包中,我们可以期待找到一系列与Java Web相关的源代码示例...

    Tomcat与Java.Web开发技术详解

    6. **会话管理**:掌握如何在Web应用中实现用户会话跟踪,包括使用Cookie和Session对象。 7. **安全配置**:学习如何配置Tomcat以增强Web应用的安全性,包括认证、授权和加密。 8. **连接数据库**:通过Java ...

    Web.config配置详解.pdf

    包括默认的编程语言(defaultLanguage)和调试模式(debug)。默认语言可以是C#或***,调试模式用于确定应用程序在开发阶段是否显示详细的调试信息。 3. &lt;customErrors&gt;:这部分允许设置自定义错误处理。mode属性...

    C#中的cookie编程(2)

    ### C#中的Cookie编程知识点详解 #### 一、Cookie简介 在C# Web开发中,Cookie是一种用于存储用户数据的小型文本文件,通常用于跟踪用户的会话状态或偏好设置等。通过Cookie,开发者可以在用户的浏览器上保存一些...

    Java Web项目之编程爱好者博客地带.zip

    【Java Web项目构建详解】 Java Web项目是基于Java技术栈构建的互联网应用程序,它结合了后端服务器端处理、数据库存储以及前端用户交互等多方面技术。本项目以"编程爱好者博客地带"为主题,旨在为编程爱好者提供一...

    Go Web 编程.pdf

    ### Go Web 编程知识点概览 #### 一、Go语言基础 1. **环境配置与安装** - **Go的安装**: 提供了不同操作系统(如Windows、Linux、macOS)下的安装包,便于用户根据自身环境进行选择。 - **`GOPATH`与工作空间**...

    我用cookie写的购物车实例

    在Web开发中,Cookie是一种小型文本文件,由服务器发送到用户的浏览器并存储在本地,用来保存用户的状态信息,如登录状态、购物车内容等。在这个实例中,Cookie被用于存储用户在网站上选择的商品信息。 【描述】...

    Tomcat与Java+Web开发技术详解PDF

    Spring框架是Java领域中实现MVC模式的首选,它提供了依赖注入、AOP(面向切面编程)等功能,极大地简化了Java Web开发。开发者需要学习如何在Tomcat上配置和运行Spring Boot应用,以及如何利用Spring MVC创建控制器...

    java web servlet编程基础

    **CGI**(Common Gateway Interface)技术是最早的Web编程技术之一,它允许外部程序通过标准输入/输出接口与Web服务器通信,从而动态生成HTML页面。虽然CGI具有一定的灵活性,但存在以下缺点: - **开发效率低**:需要...

    asp.net网络编程技术详解(闫继涛).rar

    通过"asp.net网络编程技术详解(闫继涛)"的学习,开发者能够掌握上述核心技术,并运用到实际项目中,创建高性能、安全的Web应用程序。这份资料将涵盖实践案例、代码示例和详细的解释,是ASP.NET学习者的宝贵资源。

    PHP脚本编程安全详解教程

    4. **会话管理**:使用session_start启动会话,并设置合适的session.cookie_secure和session.use_only_cookies选项来增强安全性。避免在URL中传递session ID,防止会话劫持。定期清理无效的会话数据。 5. **错误...

Global site tag (gtag.js) - Google Analytics