參考一百度文庫: java
Cookie主要由Servlet容器來完成,用javax.servlet.http.Cookie類來實現,每個Cookie對象包含一個Cookie名字和Cookie值,相似於map鍵值對。
web
1. 服務器寫Cookie到瀏覽器:建立一個Cookie對象,而後調用HttpServletResponse對象的addCookie()方法,將Cookie添加到HTTP響應結果中,即將cookie寫到客戶端瀏覽器上。數組
Cookie theCookie=new Cookie("username","Tom");瀏覽器
response.addCookie(theCookie);服務器
在Cookie構造方法中,第一個參數是Cookie的名字,第二個參數爲Cookie值.cookie
2. 服務器從瀏覽器讀Cookie:若是讀取來自客戶端的Cookie,能夠經過如下方式從HTTP請求中取得全部的Cookie值app
Cookie cookie[]=request.getCookies();dom
該方法返回一個Cookie數組,若是HTTP中沒有任何Cookie,那麼getCookie返回null。spa
對於每個Cookie對象,能夠調用getName()方法來得到Cookie的名字,而後調用getValue()方法得到Cookie的值.對象
if(cookie!=null){
for(int i=0;i<cookie.length;i++){
out.println("Cookie name:"+cookie[i]);
out.println("Cookie value:"+cookie[i].getValue());
}
}
3.當Servlet向客戶端寫Cookie時,能夠經過Cookie類的setMaxAge(int expiry)方法來設置Cookie的有效期,參數expiry以秒爲單位,它具備如下含義:
若是expiry大於零,就指示瀏覽器在客戶端硬盤上保存Cookie的時間爲expiry秒;
若是expiry等於零,就指示刪除當前的Cookie;
若是expiry小於零,就指示瀏覽器不要把Cookie保存到客戶端硬盤.Cookie僅僅用於當前的瀏覽器進程中,當瀏覽器進程關閉,Cookie就得消失;
Cookie的默認值爲-1,對於來自客戶端的Cookie,Servlet首先經過Cookie類的getMaxAge()方法來讀取Cookie的有效期;
修更名爲Tom的Cookie值,修改成Jack
if(cookie.getValue().equals("Tom")){
cookie.setValue("Jack");
response.addCookie(cookie);
}
刪除名爲Jack的Cookie值
if(cookie.getValue().equals("Jack"))
{
cookie.setMaxAge(0);
response.addCookie(cookie);
}
4.恭喜Cookie
若是服務器A上面有兩個應用app1,app2,同時在服務器B上有一個應用app3,用戶經過同一個瀏覽器訪問app1,app2,app3應用,假設在app1應用的Web組件X在瀏覽器上保存了一個Cookie,當再次請求訪問app1,app2,app3,應用中的其餘組件時,只有app1應用的web組件能讀取該Cookie,若是想要改變Cookie的共享範圍,那麼app1應用的web組件的X在寫Cookie時,能夠經過setPath(String path)和setDomain(String domain)方法來設置Cookie的path和domain屬性.
1.讓同一個Tomcat服務器A中的app1應用和app2應用共享Cookie,app1應用中的Web組件X的寫Cookie的代碼以下:
Cookie cookie=new Cookie("username","Tom");
cookie.setPath("/");
response.addCookie(cookie);
以上設置setPath()參數爲"/",表示Tomcat服務器的根路徑,所以同一個服務器上的全部Web應用能夠共享上述Cookie.
2.只能讓Tomcat服務器A的app2應用訪問Cookie,app1應用中的Web組件X的寫Cookie的代碼以下:
Cookie cookie=new Cookie("username","Tom");
cookie.setPath("/app2/");
response.addCookie(cookie);
以上設置setPath()參數爲"/app2",表示Tomcat服務器A的app2應用能夠訪問Cookie,app1應用也沒法訪問該Cookie.
3.只能讓Tomcat服務器A的app1的應用中位於"/sub"子路徑下的Web組件訪問Cookie,app1應用的Web組件X的寫Cookie的代碼以下:
Cookie cookie=new Cookie("username","Tom");
cookie.setPath("/app1/sub/");
response.addCookie(cookie);
以上設置setPath()參數爲"/app1/sub/",表示Tomcat服務器A的app1應用的位於"/sub"子路徑的組件能夠訪問Cookie.
4.讓Tomcat服務器B上的全部WEb應用訪問Cookie,假定Tomcat服務器B的域名爲爲"www.cat.com",app1應用中的Web組件X的寫Cookie的代碼以下:
Cookie cookie=new Cookie("username","Tom");
cookie.setDomain(".cat.com"); //該參數必須以"."開頭
cookie.setPath("/app3/");
response.addCookie(cookie);