天天看點

一篇文章搞懂cookie和session

1.會話技術:從打開一個浏覽器通路某個站點,到關閉這個浏覽器的過程,成為一次會話。

2.cookie:資料存儲在用戶端本地,減少伺服器的壓力,安全性不好,可以随時清除

緩存cookie;session:資料存儲在伺服器端,安全性較好,但是能增加伺服器壓力

3.伺服器向用戶端發送一個cookie,分為

    1).建立cookie  Cookie cookie = new Cookie("UserName","PassWord");

cookie會以響應頭的格式發送給用戶端。***cookie中不能存儲中文。

    2).設定cookie在用戶端的持久化時間,cookie.SetMaxAge("秒");//如果不設 置持久化時間,cookie會存儲在浏覽器的記憶體            中,浏覽器關閉,cookie銷毀 ,如果設定持久化時間,cookie資訊會被持久化到浏覽器的磁盤檔案中。

    3).設定Cookie的攜帶路徑:如果不攜帶路徑,那麼該cookie資訊會在該web工程 下所有的路徑中存在。cookie.setPath("/");

    4).向用戶端發送cookie;response.setCookie(Cookie cookie);

    5).删除cookie ,設定為0即可;cookie.SetMaxAge("0");

4.伺服器怎麼接受用戶端攜帶的cookie

     1).cookie資訊是以請求頭的方式發送給伺服器端的,通過request獲得所有的 cookie,Cookie[] cookies =        request.getCookies();

     2).周遊cookie數組,通過cookie的名稱獲得我們想要的cookie。

      for(Cookie cookie:cookies){

  if(cookie.getName.equals(cookieName))

String cookieValue = cookie.getValue();

}

========================session==============================

1.擷取session對象,HttpSession session = request.getSession();,擷取專屬當 

  前會話的session對象,如果伺服器沒有該會話的session,會建立一個session對 

 象,如果已經存在這個session對象,直接傳回(使用JSESSIONID判斷該伺服器是 

 否已經存在session,注,JSESSIONID是cookie中存儲客戶的唯一标志。)

2.擷取session對象

  request.setAttribute();

  request.getAttribute();

  request.removeAttribute();

3.建立:第一次執行request.getSession()時建立

銷毀:

  1)伺服器(非正常)關閉時

  2)session過期/失效(預設30分鐘)

   問題:時間的起算點 從何時開始計算30分鐘?

   從不操作伺服器端的資源開始計時

   可以在工程的web.xml中進行配置

   <session-config>

        <session-timeout>30</session-timeout>

   </session-config>

  3)手動銷毀session

  session.invalidate();