博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
详述cookie及其使用
阅读量:6195 次
发布时间:2019-06-21

本文共 2605 字,大约阅读时间需要 8 分钟。

hot3.png

1.  什么是Cookie??

* Cookie是HTTP协议的规范之一,它是服务器和客户端之间传输的小数据。

* 首先由服务器通过响应头把Cookie传输给客户端,客户端会将Cookie保存起来。
* 当客户端再次请求同一服务器时,客户端会在请求头中添加该服务器保存的Cookie,发送给服务器。
* Cookie就是服务器保存在客户端的数据(保存在本地磁盘)
* Cookie就是一个键值对!!!

 

下面是一个jsp向客户端保存以及从客户端获取cookie的小例子:(cookieA.jsp用于向浏览器保存cookie,cookieB.jsp从客户端获取cookie)

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
保存Cookie  <%--由于在WebRoot下的Cookie目录下,所以访问地址栏的时候注意多加上/Cookie --%>

保存cookie测试

  <%      Cookie cookie1 = new Cookie("aaa","AAA");   //创建Cookie对象,初始化一对键值对          response.addCookie(cookie1);                //向浏览器中添加cookie          Cookie cookie2 = new Cookie("bbb","BBB");          response.addCookie(cookie2);  %>        
 <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
向浏览器获取cookie

获取cookie测试

  <%   Cookie[] cookies = request.getCookies();  //获取的cookie以数组形式得到      if(cookies != null){    for(Cookie c : cookies){              //for循环的增强,迭代,常使用于数组和集合          out.print(c.getName()+"="+c.getValue()+"
");    }   }  %>

2. cookie的生命周期

cookie.setMaxAge();    //设置cookie在客户机上的保存时间

  * maxAge > 0:表示Cookie在客户端硬盘上保存的最大时间,单位为秒;

  * maxAge < 0:表示Cookie不会被浏览器保存到硬盘上,而只在浏览器内存中存活,一旦客户端关闭浏览器,那么Cookie就消失;
  * maxAge == 0:表示删除Cookie,例如客户端硬盘已经存在名为abc的Cookie,如果服务器再向客户端发送名为abc,并且maxAge为0的Cookie,那么表示删除客户端上的名为abc的Cookie。

下面用一个程序演示一下:

<CookieOverA.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
测试cookie生命周期<%   Cookie cookie3 = new Cookie("ccc","DDD");   cookie3.setMaxAge(60*60);   //设置cookie1的值于一小时后自动删除      response.addCookie(cookie3);      Cookie cookie4 = new Cookie("fff","FFF");   response.addCookie(cookie4);  //由于未设置setMaxAge,默认 cookie2在浏览器关闭时删除%>   

 <CookieOverB.jsp>

 <%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
测试cookie生命周期   <%    /* 接收cookie */         Cookie[] cookies = request.getCookies();   if(cookies != null){      for(Cookie c : cookies){       out.print(c.getName()+"="+c.getValue()+"
");      }   }      /* 演示随时删除某cookie */       /*  Cookie cookie3 = new Cookie("ccc","DDD");         cookie3.setMaxAge(0);//这句话表示删除cookie3该键值对        response.addCookie(cookie3); */        %>

配效果图两张:

150235_sKHz_2298764.png

153255_ciYm_2298764.png

3. cookie的path

  1.注意该path并不是cookie保存在客户端的路径,只有当访问的地址包含cookie的path时,浏览器才会给请求的页面带来相应的cookie。

例如:上面的cookie3的path为/JSPTest/Cookie,那么只要当访问的地址包含这个path时,浏览器就会给这个页面带去cookie("ccc","DDD")该键值对。例如访问:/JSPTest/Cookie/a.jsp ; /JSPTest/Cookie/xx.jsp等等

 

备注:为cookie设置path的方法:cookie3.setPath=“/test”;

 

转载于:https://my.oschina.net/kaixuan1995/blog/382312

你可能感兴趣的文章
《Prism 5.0源码走读》Prism 5.0简介
查看>>
[Selenium] HTML5 中的 Geolocation
查看>>
暴力(判凸四边形) FZOJ 2148 Moon Game
查看>>
线段树/树状数组 POJ 2182 Lost Cows
查看>>
最短路(Bellman_Ford) POJ 3259 Wormholes
查看>>
01背包 URAL 1073 Square Country
查看>>
poj1012
查看>>
javascript思想干货
查看>>
过滤器
查看>>
BZOJ2752:[HAOI2012]高速公路——题解
查看>>
BZOJ3530:[SDOI2014]数数——题解
查看>>
线程与进程的区别?
查看>>
NetCore入门篇:(九)Net Core项目使用Session及用Redis做分布式
查看>>
ora-01033:oracle initialization or shutdown in progress 解决方法
查看>>
Linux (Ubuntu)提示ifconfig:找不到命令
查看>>
LNMP 多用户动态进程管理虚拟主机方案
查看>>
CentOS6.8 安装FTP及添加用户
查看>>
StackPanel布局
查看>>
Python--day24--复习
查看>>
hdu 4686 矩阵乘法优化递推关系
查看>>