Cookie的过期时间设置
—高级软件人才实作培训专家!Cookie 的过期时间设置1.Cookie 生存时间介绍我们知道Cookie 是一个键值对,但是Cookie 不仅仅只有name 和value 属性,它还有以下几种属性:
—高级软件人才实作培训专家!
Cookie 的过期时间设置
1.Cookie 生存时间介绍
我们知道Cookie 是一个键值对,但是Cookie 不仅仅只有name 和value 属性,它还有以下几种属性:
(1)注释:描述此cookie 的用途;
(2)路径:指的是浏览器将此cookie 返回到服务器上的路径,并且该cookie 对于服务器上的所有子路
径都是可见的。
(3)域限定符:创建cookie 时设置的域名,域名形式是根据RFC 2109设置的;
(4)最大生存时间:表示cookie 的存活时间,过了设置的最大生存时间,该cookie 就会死亡;
(5)版本号:表示cookie 遵守的协议版本,版本1遵守RFC 2109,版本0遵守根据Netscape 起草的
原始cookie 规范。
本文档只对Cookie 的最大生存时间进行讲解,其他属性后面会一一说明。
Cookie 的过期时间即为Cookie 的最大生存时间,可以通过以下方法进行设置,如下所示:
●void setMaxAge(intexpiry)
该方法的参数的类型是整型,表示过期的时间,单位是秒。例如:cookie.setMaxAge(60)表示当前cookie 会被浏览器保存在硬盘上,60秒后会被浏览器删除。
下面分情况说明cookie 的setMaxAge()方法对cookie 生存时间的设置,如下所示:
setMaxAge()参数大于0:表示将当前cookie 保存在硬盘上,保存时间由其参数决定;
setMaxAge()参数小于0:无论该方法的参数是多少,只要小于0,则表示将当前cookie 保存在浏览器内存中,浏览器关闭的同时cookie 死亡;
setMaxAge()参数等于0:表示浏览器将当前cookie 及之前保存的同名cookie 删除,例如刚开始在浏览器端保存了一个cookie ,名称为history ,保存时间为2天,现在希望将该history 删除,这个时候就可以向浏览器端再次发送一个名字为history 的cookie ,生存时间设置为0。这个时候浏览器会将名字为history 的所有cookie 删除。
如果,在服务器端新建一个cookie ,并没有给该cookie 设置生存时间,那么表示:该cookie 会在浏览器关闭的时候被浏览器删除。
2.Cookie 设置生存时间练习
通过以上对cookie 生存时间的了解,下面通过一个案例来直观的体会cookie 的生存时间设置对cookie 的影响,具体如下:
(1)创建一个web 项目,Example19,在该应用下的WebRoot 目录下新建一个jsp 文件,名称为cookieSet.jsp ,主要代码如例1-1所示:
例1-1cookieSet.jsp
保存cookie
<
Cookie cookie1=newCookie("cookie1","aaa");
,—高级软件人才实作培训专家! response.addCookie(cookie1);
>
例1-1中,创建了一个cookie ,但是并没有设置cookie 的生存时间,通过以上对cookie 生存时间的讲解,该cookie 会在浏览器关闭的时候被销毁。
(2)将Example19发布到Tomcat 服务器中,然后启动服务器,谷歌浏览器查看cookie 比较方便,我们在谷歌浏览器端地址栏上访问:
图1-1浏览器显示结果
(3)查看谷歌浏览器中的cookie ,点击图1-1
所示的红色标注的图标,在下拉选项中选择【设置】,进入图1-2所示界面:
图1-2查看cookie
(4)点击图1-2中的【内容设置】选项,进入图1-3所示界面:
,—高级软件人才实作培训专家
!
图1-3查看cookie
(5)点击图1-3中的【所有Cookie 和网站数据…】按钮,进入图1-4
所示界面:
图1-4查看cookie
(6)点击图1-4所示的【cookie1】按钮,进入图1-5所示界面:
,—高级软件人才实作培训专家
!
图1-5cookie 信息
由图1-5可知,名字为cookie1的cookie 的过期时间为浏览会话结束时,即表示浏览器关闭,cookie 被删除。
(7)关闭浏览器,再次打开浏览器,查看cookie1是否还存在,如图1-6
所示:
图1-6cookie 信息
由图1-6所示,浏览器中已经不存在名为cookie1的cookie 。
(8)对例1-1中的代码进行修改,如例1-2所示:
例1-2cookieSet.jsp
保存cookie
<
Cookie cookie1=newCookie("cookie1","aaa");
cookie1.setMaxAge(60*60)
,—高级软件人才实作培训专家! response.addCookie(cookie1);
>
例1-2中,将cookie1的生存时间设置为1小时。
(9)在浏览器端再次访问cookieSet.jsp
页面,查看浏览器中cookie1的保存时间,如图1-7所示:
图1-7cookie 信息
由图1-7可知,cookie1的保存时间是10:08:12,过期时间是:11:08:12,其生存时间正好是1个小时。cookie1在浏览器端的存活时间是1小时,浏览器关闭后再打开,cookie1仍然存在,现在我们通过代码来将cookie1从浏览器端删除。
(10)在Example19应用的WebRoot 目录下,新建一个jsp 文件,名称为cookieGet.jsp ,主要代码如例1-3所示:
例1-3cookieGet.jsp
删除cookie
<
Cookie cookie=newCookie("cookie1","aaa");
cookie.setMaxAge(0);
response.addCookie(cookie);
>
例1-3中,再次新建一个名字为cookie1的cookie ,并且设置其过期时间为0,表示浏览器立即删除当前及之前保存的名字为cookie1的cookie 。
(11)重新启动服务器,在浏览器端地址栏上输入:http://localhost:8080/Example19/cookieGet.jsp,然后查看浏览器端的cookie1是否还存在,如图1-8所示:
,—高级软件人才实作培训专家
!
图1-8查看cookie
由图1-8可知,浏览器端的cookie1已经不存在了,它原本的生存时间是1小时,经过cookieGet.jsp 页面中代码的设置,没有到过期时间就被浏览器删除了。