教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

java培訓(xùn)之Cookie與HttpSession

更新時(shí)間:2016年06月30日14時(shí)48分 來(lái)源:傳智播客java培訓(xùn) 瀏覽次數(shù):

Cookie概述

 
1 什么叫Cookie
Cookie翻譯成中文是小甜點(diǎn),小餅干的意思。在HTTP中它表示服務(wù)器送給客戶端瀏覽器的小甜點(diǎn)。其實(shí)Cookie就是一個(gè)鍵和一個(gè)值構(gòu)成的,隨著服務(wù)器端的響應(yīng)發(fā)送給客戶端瀏覽器。然后客戶端瀏覽器會(huì)把Cookie保存起來(lái),當(dāng)下一次再訪問(wèn)服務(wù)器時(shí)把Cookie再發(fā)送給服務(wù)器。
 

2 Cookie規(guī)范
你大可以放心,Cookie不會(huì)占滿你的硬盤。因?yàn)橐粋€(gè)Cookie最多只有4KB,一個(gè)服務(wù)器最多只能發(fā)送到客戶端20個(gè)Cookie,并且瀏覽器最多可以保存300個(gè)Cookie。當(dāng)然,在瀏覽器大戰(zhàn)的今天,一些瀏覽器為了打敗對(duì)手,可能對(duì)Cookie規(guī)范“擴(kuò)展”了一些,例如每個(gè)Cookie的大小為8KB,最多可保存500個(gè)Cookie等!但也不會(huì)出現(xiàn)把你硬盤占滿的可能!
不同的瀏覽器之間不能共享Cookie?。?!
 

3 Cookie的作用
Cookie的作用可大了,但無(wú)論怎么夸大Cookie的作用都離不開“跟蹤客戶端狀態(tài)”這句話。我們知道Cookie是服務(wù)器保存在客戶端的信息,然后客戶端會(huì)在下次請(qǐng)求時(shí)把Cookie在還給服務(wù)器,這樣服務(wù)器就可以通過(guò)信息來(lái)識(shí)別客戶端了。
就好比你去醫(yī)院看病,第一次去需要買卡片,然后你去任何科室都需要你出示卡片。只要你出示卡片,醫(yī)生就會(huì)知道你去過(guò)哪些科室,看了哪些?。】ㄆ现挥幸粋€(gè)ID,它就是Cooke,而你本人就是客戶端,而醫(yī)生就是服務(wù)器了。

4 Cookie的屬性
Cookie最重要的4個(gè)屬性:
  • 名字(name);
  • 值(value);
  • 路徑(path);
  • 域(domain)。
 
現(xiàn)在我們只需要關(guān)心name和value,而path和domain可以先不去了解!但后面也會(huì)去講解它們的用法。
javax.servlet.http.Cookie類只有一個(gè)構(gòu)造器:Cookie(String name, String value)。你應(yīng)該知道怎么去創(chuàng)建一個(gè)Cookie對(duì)象吧:Cookie c = new Cookie(“id”, “HZ_001”);
 

5 保存Cookie到客戶端
保存Cookie到客戶端,這是響應(yīng)工作的一部分,所以這個(gè)方法是response對(duì)象的。并且Cookie是HTTP協(xié)議中的內(nèi)容,所以保存Cookie是HttpServletResponse類的方法。
void addCookie(Cookie c):添加Cookie對(duì)象到當(dāng)前response對(duì)象中,這個(gè)方法可以被調(diào)用多次,從而完成添加多個(gè)Cookie對(duì)象到response中。


 
 
 使用瀏覽器訪問(wèn)http://localhost/day07_03/AServlet,然后通過(guò)HttpWatch查看響應(yīng)頭信息中是否存在Set-Cookie這個(gè)頭信息。
  當(dāng)再交方法http://localhost/day07_03/AServlet時(shí),查看請(qǐng)求頭信息中是否存在Cookie這個(gè)頭信息。當(dāng)然也可以嘗試訪問(wèn)http://localhost/day07_03/BServlet是否在請(qǐng)求頭中存在Cookie這個(gè)頭信息。
 嘗試訪問(wèn)http://localhost/day07_03/BServlet,你可能會(huì)說(shuō),BServlet不存在,沒(méi)錯(cuò),BServlet是不存在,但我們只關(guān)心請(qǐng)求,而不關(guān)心響應(yīng)。我們只需要看看在請(qǐng)求中是否存在Cookie這個(gè)頭信息。你應(yīng)該已經(jīng)嘗試過(guò)了,也看到了Cookie請(qǐng)求頭信息。這說(shuō)明不只是訪問(wèn)AServlet才會(huì)有Cookie請(qǐng)求頭信息,而是只要訪問(wèn)這個(gè)day07_03就會(huì)有Cookie這個(gè)請(qǐng)求頭。
 

本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://oisangadgets.com/javaee
0 分享到:
和我們?cè)诰€交談!