全国咨询/投诉热线:400-618-4000

JAVA培训之Cookie的过期时间设置

更新时间:2016年08月17日16时14分 来源:传智播客JAVA培训学院 浏览次数:

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(int expiry)
该方法的参数的类型是整型,表示过期的时间,单位是秒。例如: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-1 cookieSet.jsp
  <body>
  <h1>保存cookie</h1>
    <%
      Cookie cookie1=new Cookie("cookie1","aaa");
      response.addCookie(cookie1);
     %>
  </body>
例1-1中,创建了一个cookie,但是并没有设置cookie的生存时间,通过以上对cookie生存时间的讲解,该cookie会在浏览器关闭的时候被销毁。
(2)将Example19发布到Tomcat服务器中,然后启动服务器,谷歌浏览器查看cookie比较方便,我们在谷歌浏览器端地址栏上访问:http://localhost:8080/Example19/cookieSet.jsp,浏览器显示结果如图1-1所示:

图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-5 cookie信息
由图1-5可知,名字为cookie1的cookie的过期时间为浏览会话结束时,即表示浏览器关闭,cookie被删除。
(7)关闭浏览器,再次打开浏览器,查看cookie1是否还存在,如图1-6所示:

图1-6 cookie信息
由图1-6所示,浏览器中已经不存在名为cookie1的cookie。
(8)对例1-1中的代码进行修改,如例1-2所示:
例1-2 cookieSet.jsp
  <body>
  <h1>保存cookie</h1>
    <%
      Cookie cookie1=new Cookie("cookie1","aaa");
      cookie1.setMaxAge(60*60)
      response.addCookie(cookie1);
     %>
  </body>
例1-2中,将cookie1的生存时间设置为1小时。
(9)在浏览器端再次访问cookieSet.jsp页面,查看浏览器中cookie1的保存时间,如图1-7所示:

图1-7 cookie信息
由图1-7可知,cookie1的保存时间是10:08:12,过期时间是:11:08:12,其生存时间正好是1个小时。
cookie1在浏览器端的存活时间是1小时,浏览器关闭后再打开,cookie1仍然存在,现在我们通过代码来将cookie1从浏览器端删除。
(10)在Example19应用的WebRoot目录下,新建一个jsp文件,名称为cookieGet.jsp,主要代码如例1-3所示:
例1-3 cookieGet.jsp
<body>
  <h1>删除cookie</h1>
    <%
      Cookie cookie=new Cookie("cookie1","aaa");
      cookie.setMaxAge(0);
      response.addCookie(cookie);
     %>
  </body>
例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页面中代码的设置,没有到过期时间就被浏览器删除了。

本文版权归传智播客Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Java培训学院
首发:http://www.itcast.cn/javaee

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

uids

北京校区

    14天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    15天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    8天免费试学

    基础班入门课程限时免费

    申请试学名额

    20天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    0天免费试学

    基础班入门课程限时免费

    申请试学名额

    12天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    5天免费试学

    基础班入门课程限时免费

    申请试学名额

    10天免费试学

    基础班入门课程限时免费

    申请试学名额