1. 程式人生 > >會話技術:cookie和session

會話技術:cookie和session

ron 不能 max 壓力 println 狀態 空間 ets 對象

2018-05-10  21:43:16

會話

  從打開一個瀏覽器的某個站點到關閉這個瀏覽器的整個過程,叫做一次會話。會話技術用於記錄這次會話中客戶端的數據和狀態,它又分為cookie和session。

cookie:

  數據存儲在客戶端,減少了服務器存儲的壓力,安全性較低,客戶端可以清除cookie

session:

  數據存儲在服務器,服務器的存儲壓力較大,安全性較高

cookie技術

1)cookie的創建

  Cookie cookie = new Cookie(name, value);

  參數為String類型,不能用中文

  cookie創建後會以響應頭的形式傳遞給客戶端

2)cookie的持續時間

  默認:關閉瀏覽器cookie信息被銷毀

  //為Cookie設置持久化時間
cookie.setMaxAge(60*10);//10分鐘,單位為秒

  設置持續時間後,cookie信息會存儲到磁盤裏,並在時間過後銷毀信息

3)cookie的攜帶路徑

  默認:會在訪問產生該cookie的web資源所在的路徑時,都攜帶cookie信息

  cookie.setPath("/WEB16");

  代表訪問WEB16應用中的任何資源都攜帶cookie

  cookie.setPath("/WEB16/cookieServlet");

  代表訪問WEB16中的cookieServlet時才攜帶cookie信息

4)想客戶端發送cookie

  response.addCookie(Cookie cookie)

5)cookie的刪除

  創建同名同路徑的cookie對象,並將持續時間設置為0s,對原來的cookie進行覆蓋

6)服務器接收cookie數據

  //獲得客戶端攜帶的cookie數據
Cookie[] cookies = request.getCookies();
//通過cookie名稱獲得想要的cookie
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("name")){
//獲取cookie的值
String cookieValue = cookie.getValue();
System.out.println(cookieValue);
}
}
}

session

  session會在服務器為每個用戶創建一塊內存空間,用於存儲數據,客戶端每次都要攜帶JSESSIONID在服務器尋找對應的空間,而session借助cookie的存儲空間存儲JSESSIONID,因此session的實現基於cookie

1)session的創建

  HttpSession session = request.getSession();

  如果服務器沒有該會話的session對象,則創建一個新的對象

  如果已經存在session對象,則返回原來的對象

  它的實質是根據JSESSIONID判斷客戶端是否已經在服務器上存在session對象

2)session的存取方法

  session.setAttribute(String name,Object obj);

  session.getAttribute(String name);

  session.removeAttribute(String name);

3)session的生命周期

  創建時間:第一次執行request.getSession()

  銷毀時間:<1>服務器非正常關閉時

       <2>session失效(默認三十分鐘)

        從何時開始計時?從不操作服務器端資源開始

       <3>手動摧毀session

        session.invalidate();

會話技術:cookie和session