Cookie的過(guò)期時(shí)間設(shè)置
—高級(jí)軟件人才實(shí)作培訓(xùn)專家!Cookie 的過(guò)期時(shí)間設(shè)置1.Cookie 生存時(shí)間介紹我們知道Cookie 是一個(gè)鍵值對(duì),但是Cookie 不僅僅只有name 和value 屬性,它還有以下幾種屬性:
—高級(jí)軟件人才實(shí)作培訓(xùn)專家!
Cookie 的過(guò)期時(shí)間設(shè)置
1.Cookie 生存時(shí)間介紹
我們知道Cookie 是一個(gè)鍵值對(duì),但是Cookie 不僅僅只有name 和value 屬性,它還有以下幾種屬性:
(1)注釋:描述此cookie 的用途;
(2)路徑:指的是瀏覽器將此cookie 返回到服務(wù)器上的路徑,并且該cookie 對(duì)于服務(wù)器上的所有子路
徑都是可見(jiàn)的。
(3)域限定符:創(chuàng)建cookie 時(shí)設(shè)置的域名,域名形式是根據(jù)RFC 2109設(shè)置的;
(4)最大生存時(shí)間:表示cookie 的存活時(shí)間,過(guò)了設(shè)置的最大生存時(shí)間,該cookie 就會(huì)死亡;
(5)版本號(hào):表示cookie 遵守的協(xié)議版本,版本1遵守RFC 2109,版本0遵守根據(jù)Netscape 起草的
原始cookie 規(guī)范。
本文檔只對(duì)Cookie 的最大生存時(shí)間進(jìn)行講解,其他屬性后面會(huì)一一說(shuō)明。
Cookie 的過(guò)期時(shí)間即為Cookie 的最大生存時(shí)間,可以通過(guò)以下方法進(jìn)行設(shè)置,如下所示:
●void setMaxAge(intexpiry)
該方法的參數(shù)的類型是整型,表示過(guò)期的時(shí)間,單位是秒。例如:cookie.setMaxAge(60)表示當(dāng)前cookie 會(huì)被瀏覽器保存在硬盤(pán)上,60秒后會(huì)被瀏覽器刪除。
下面分情況說(shuō)明cookie 的setMaxAge()方法對(duì)cookie 生存時(shí)間的設(shè)置,如下所示:
setMaxAge()參數(shù)大于0:表示將當(dāng)前cookie 保存在硬盤(pán)上,保存時(shí)間由其參數(shù)決定;
setMaxAge()參數(shù)小于0:無(wú)論該方法的參數(shù)是多少,只要小于0,則表示將當(dāng)前cookie 保存在瀏覽器內(nèi)存中,瀏覽器關(guān)閉的同時(shí)cookie 死亡;
setMaxAge()參數(shù)等于0:表示瀏覽器將當(dāng)前cookie 及之前保存的同名cookie 刪除,例如剛開(kāi)始在瀏覽器端保存了一個(gè)cookie ,名稱為history ,保存時(shí)間為2天,現(xiàn)在希望將該history 刪除,這個(gè)時(shí)候就可以向?yàn)g覽器端再次發(fā)送一個(gè)名字為history 的cookie ,生存時(shí)間設(shè)置為0。這個(gè)時(shí)候?yàn)g覽器會(huì)將名字為history 的所有cookie 刪除。
如果,在服務(wù)器端新建一個(gè)cookie ,并沒(méi)有給該cookie 設(shè)置生存時(shí)間,那么表示:該cookie 會(huì)在瀏覽器關(guān)閉的時(shí)候被瀏覽器刪除。
2.Cookie 設(shè)置生存時(shí)間練習(xí)
通過(guò)以上對(duì)cookie 生存時(shí)間的了解,下面通過(guò)一個(gè)案例來(lái)直觀的體會(huì)cookie 的生存時(shí)間設(shè)置對(duì)cookie 的影響,具體如下:
(1)創(chuàng)建一個(gè)web 項(xiàng)目,Example19,在該應(yīng)用下的WebRoot 目錄下新建一個(gè)jsp 文件,名稱為cookieSet.jsp ,主要代碼如例1-1所示:
例1-1cookieSet.jsp
保存cookie
<
Cookie cookie1=newCookie("cookie1","aaa");
,—高級(jí)軟件人才實(shí)作培訓(xùn)專家! response.addCookie(cookie1);
>
例1-1中,創(chuàng)建了一個(gè)cookie ,但是并沒(méi)有設(shè)置cookie 的生存時(shí)間,通過(guò)以上對(duì)cookie 生存時(shí)間的講解,該cookie 會(huì)在瀏覽器關(guān)閉的時(shí)候被銷毀。
(2)將Example19發(fā)布到Tomcat 服務(wù)器中,然后啟動(dòng)服務(wù)器,谷歌瀏覽器查看cookie 比較方便,我們?cè)诠雀铻g覽器端地址欄上訪問(wèn):
圖1-1瀏覽器顯示結(jié)果
(3)查看谷歌瀏覽器中的cookie ,點(diǎn)擊圖1-1
所示的紅色標(biāo)注的圖標(biāo),在下拉選項(xiàng)中選擇【設(shè)置】,進(jìn)入圖1-2所示界面:
圖1-2查看cookie
(4)點(diǎn)擊圖1-2中的【內(nèi)容設(shè)置】選項(xiàng),進(jìn)入圖1-3所示界面:
,—高級(jí)軟件人才實(shí)作培訓(xùn)專家
!
圖1-3查看cookie
(5)點(diǎn)擊圖1-3中的【所有Cookie 和網(wǎng)站數(shù)據(jù)…】按鈕,進(jìn)入圖1-4
所示界面:
圖1-4查看cookie
(6)點(diǎn)擊圖1-4所示的【cookie1】按鈕,進(jìn)入圖1-5所示界面:
,—高級(jí)軟件人才實(shí)作培訓(xùn)專家
!
圖1-5cookie 信息
由圖1-5可知,名字為cookie1的cookie 的過(guò)期時(shí)間為瀏覽會(huì)話結(jié)束時(shí),即表示瀏覽器關(guān)閉,cookie 被刪除。
(7)關(guān)閉瀏覽器,再次打開(kāi)瀏覽器,查看cookie1是否還存在,如圖1-6
所示:
圖1-6cookie 信息
由圖1-6所示,瀏覽器中已經(jīng)不存在名為cookie1的cookie 。
(8)對(duì)例1-1中的代碼進(jìn)行修改,如例1-2所示:
例1-2cookieSet.jsp
保存cookie
<
Cookie cookie1=newCookie("cookie1","aaa");
cookie1.setMaxAge(60*60)
,—高級(jí)軟件人才實(shí)作培訓(xùn)專家! response.addCookie(cookie1);
>
例1-2中,將cookie1的生存時(shí)間設(shè)置為1小時(shí)。
(9)在瀏覽器端再次訪問(wèn)cookieSet.jsp
頁(yè)面,查看瀏覽器中cookie1的保存時(shí)間,如圖1-7所示:
圖1-7cookie 信息
由圖1-7可知,cookie1的保存時(shí)間是10:08:12,過(guò)期時(shí)間是:11:08:12,其生存時(shí)間正好是1個(gè)小時(shí)。cookie1在瀏覽器端的存活時(shí)間是1小時(shí),瀏覽器關(guān)閉后再打開(kāi),cookie1仍然存在,現(xiàn)在我們通過(guò)代碼來(lái)將cookie1從瀏覽器端刪除。
(10)在Example19應(yīng)用的WebRoot 目錄下,新建一個(gè)jsp 文件,名稱為cookieGet.jsp ,主要代碼如例1-3所示:
例1-3cookieGet.jsp
刪除cookie
<
Cookie cookie=newCookie("cookie1","aaa");
cookie.setMaxAge(0);
response.addCookie(cookie);
>
例1-3中,再次新建一個(gè)名字為cookie1的cookie ,并且設(shè)置其過(guò)期時(shí)間為0,表示瀏覽器立即刪除當(dāng)前及之前保存的名字為cookie1的cookie 。
(11)重新啟動(dòng)服務(wù)器,在瀏覽器端地址欄上輸入:http://localhost:8080/Example19/cookieGet.jsp,然后查看瀏覽器端的cookie1是否還存在,如圖1-8所示:
,—高級(jí)軟件人才實(shí)作培訓(xùn)專家
!
圖1-8查看cookie
由圖1-8可知,瀏覽器端的cookie1已經(jīng)不存在了,它原本的生存時(shí)間是1小時(shí),經(jīng)過(guò)cookieGet.jsp 頁(yè)面中代碼的設(shè)置,沒(méi)有到過(guò)期時(shí)間就被瀏覽器刪除了。