首页  > 经典回顾

深入了解Cookie的形成过程

先复习一下HTTP协议,即超文本传输协议的特点

1.支持clint/server模式

2.简单快速:客户向服务器请求服务的时候,只需要传送请求方法和路径。常用的又GET HEAD POST,

每种方法规定了客户与服务器练习的类型不同。由于HTTP协议简单,所以程序规模小,通讯速度快。

3.灵活:可以有Context-Type支持任意输出类型的对象

4.无连接:指Web浏览器与Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Response),连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,而服务器不能主动向客户端发送数据。节省了传输时间

5.无状态:对事务处理没有记忆能力,意味着一旦后续需要处理前面的信息,必须重传。

Cookie实际上是key-value格式呈现的。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

这里我通过setCookie创建了一个键值对为name和gareen的cookie

此处的setMaxAge可以填写负数,0,正数三种内容,此处表明是一天的时间

当为负数时,浏览器会在关闭后销毁cookie。

为0时,会 立刻删除cookie,一秒都不保存。

正数即代表时间。

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>

<%

Cookie c=new Cookie("name","Gareen");

c.setMaxAge(60*24*60);

c.setPath("/");

response.addCookie(c);

%>

跳转到cookie页面

随后,使用了getCookies方法遍历了cookie数组得到所有的键值对,在response.addCookie()之后,服务器就不再拥有数据了,转而到用户这,保存在本地,访问时会提交保存的cookie信息。

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%

Cookie cookies[]=request.getCookies();

if(cookies!=null){

for(int i=0;i

out.print(cookies[i].getName()+":"+cookies[i].getValue()+"
");

}

}

%>

下图是总结出来的cookie原理图: