码迷,mamicode.com
首页 > 其他好文 > 详细

Cookie

时间:2016-07-01 23:01:54      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

提出问题

  HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的

  作为 web 服务器,必须能够采用一种机制来唯一地标识一个用户,同时记录该用户的状态

会话和会话状态

  WEB应用中的会话是指一个客户端浏览器与WEB服务器之间连续发生的一系列请求和响应过程。

  WEB应用的会话状态是指WEB服务器与浏览器在会话过程中产生的状态信息,借助会话状态,WEB服务器能够把属于同一会话中的一系列的请求和响应过程关联起来

如何实现有状态的会话

  需要浏览器对其发出的每个请求消息都进行标识:这个标识号就称之为会话ID(SessionID)。

  在 Servlet 规范中,常用以下两种机制完成会话跟踪: Cookie ; Session

Cookie机制

  cookie机制采用的是在客户端保持 HTTP 状态信息的方案

  Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一个小文本文件。

  一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时,都会在HTTP请求头中将这个Cookie回传给WEB服务器。

  底层的实现原理: WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP请求消息中增加Cookie请求头字段将Cookie回传给WEB服务器。

  一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。

  一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。

  浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

在Servlet程序中使用Cookie

  Servlet API中提供了一个javax.servlet.http.Cookie类来封装Cookie信息,它包含有生成Cookie信息和提取Cookie信息的各个属性的方法。

Cookie类的方法:

  构造方法: public Cookie(String name,String value)
  getName方法
  setValue与getValue方法
  setMaxAge与getMaxAge方法
  setPath与getPath方法

   HttpServletResponse接口中定义了一个addCookie方法,它用于在发送给浏览器的HTTP响应消息中增加一个Set-Cookie响应头字段。

   HttpServletRequest接口中定义了一个getCookies方法,它用于从HTTP请求消息的Cookie请求头字段中读取所有的Cookie项。

Cookie的发送

  1.创建Cookie对象

  2.设置最大时效

  3.将Cookie放入到HTTP响应报头

    如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie; 存储在浏览器的内存中,用户退出浏览器之后被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以为单位的时间。将最大时效设为0则是命令浏览器删除该cookie

    发送cookie需要使用HttpServletResponse的addCookie方法,将cookie插入到一个 Set-Cookie HTTP响应报头中。由于这个方法并不修改任何之前指定的Set-Cookie报头,而是创建新的报头,因此将这个方法称为是addCookie,而非setCookie。

会话cookie和持久cookie的区别

  会话cookie一般不保存在硬盘上而是保存在内存里。

  如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。

Cookie的读取

  1.调用request.getCookies

  2.对数组进行循环,调用每个cookie的getName方法,直到找到感兴趣的cookie为止

 Cookie 的 作用范围:

  可以作用当前目录和当前目录的子目录. 但不能作用于当前目录的上一级目录.

  可以通过 setPath 方法来设置 Cookie 的作用范围, 其中 / 代表站点的根目录.

Cookie

标签:

原文地址:http://www.cnblogs.com/linyueshan/p/5632451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!