Cookie的实例应用

Cookie的实例应用

一 Cookie的简单实例---如何创建和添加到Servlet中

第一步:实例化一个Cookie,用来保存会话状态信息

Cookie cookie1 = new Cookie("name",name);

cookie1.setMaxAge(24*60*60);//设置一天的时间

Cookie cookie2 = new Cookie("nicknName",nickName);

第二步:将生成的Cookie对象添加到响应消息头字段中,从服务器发送给客户端

response.addCookie(cookie1);

response.addCookie(cookie2);

注:(1)在创建了Cookie之后,如果没有设置有效的日期,只存在内存中,只对当前的进程有效.设置日期的时候要注意,日期是用秒来计算的,所有必须转换为秒,格式如下:

有效日期的设置用方法:setMaxAge(24*60*60)

(2)Cookie是以键值对的形式存在的,所有初始化的时候是用键值对

二 Cookie方法的使用

1.获取对象的值和属性

cookie1.getName()

cookie1.getValue()

System.out.println(cookie1.getName()+","+cookie1.getValue());

2.设置对象的值和属性

cookie1.setValue("tom");

注:设置值之后,在地址栏上的值就是它,而且每次输出getValue()时都为空。只有在重置了域名之后,才会改变name值,并且在getValue()是输出的是设置的值,不是null。

3.设置域名

cookie1.setDomain(".csdn.com.cn");

cookie2.setDomain("localhost");

System.out.println(cookie1.getDomain()); //不为空

4.获取Cookie消息头中的值------消息头有多个,用数组

从请求对象中获取Cookie值

Cookie[] cookies = request.getCookies();

if(cookies!=null){

for(int i = 0;iout.println(cookies[i].getName()+":"+cookies[i].getValue()+";"+cookies[i].getMaxAge()+";"+cookies[i].getDomain());

}

注:如果cookies为null,则证明是第一次创建Cookie。并且在每次创建Cookie之后,新创建的Cookie会替代旧的作为get消息头,但是响应服务器的时候是新创建的。

5.Cookie请求头字段

(1)浏览器使用Cookie请求头字段将Cookie信息回送给WEB服务器。

(2)多个Cookie信息通过一个Cookie请求头字段回送给WEB服务器。

(3)浏览器根据下面的几个规则决定是否发送某个Cookie信息:

请求的主机名是否与某个存储的Cookie的Domain属性匹配;

请求的端口号是否在该Cookie的Port属性列表中;

请求的资源路径是否在该Cookie的Path属性指定的目录及子目录中;

该Cookie的有效期是否已过。

三 实例应用--获取上次访问的时间

Cookie[] cookies = request.getCookies();

if(cookies!=null){

//通过循环遍历

for(int i = 0;i

//上一次的访问时间是根据名字是否相同判断的

String last = cookies[i].getName();

if("last_time".equals(last)){

out.print("你是老用户,上一次访问 时间"+cookies[i].getValue());

break;

}

}

}else{

out.print("你是第一次访问站点!");

}

注:cookies=null 表示的是第一次访问

四 注意点总结

(1)不是每次访问的Cookie都封装在请求消息中,如果在本地找不到想要访问的Cookie,就不会封装

(2)每一个Cookie都有一个domain属性 domain是URL ,即是访问的地址

(3)在发生请求之前先去本地找Cookie,如果在本地找到相同的Cookie,就封装到一个请求消息头字段,发送给服务端

(4)如果setPath()属性和setDomain属性,端口号和有效日期不过期,才会封装到消息头中并发送.

(5)域名的设置-------实现跨域的操作:

Cookie1.setDomain(.csdn.com.cn);

(6)只有在path、主机、端口、有效日期不过期的情况下,才会覆盖,要不会当成一个新的Cookie

你可能感兴趣的:(Cookie的实例应用)