會話跟蹤技術session和cookie
阿新 • • 發佈:2022-03-06
隨筆連結:
Cookie
- 1.什麼是Cookie
- 2.Cookie的建立和伺服器的獲取
Session
- 1.什麼是Session
- 2.Session的建立和獲取
- 3.Session域資料的處理
- 4.Session的生命週期
- 5.關於Session的兩個問題
會話跟蹤技術Session和Cookie:
Cookie
1.什麼是Cookie
2.Cookie的建立和伺服器的獲取
Cookie的建立過程:
- 建立Cookie
Cookie cookie = new Cookie("key",value);
- 給客戶端響應Cookie物件,通知客戶端儲存Cookie
response.addCookie(cookie);
伺服器獲取Cookie:
//伺服器獲取CookieCookie[] cookies = request.getCookies();
Session
1.什麼是Session
- Session:Session 伺服器端會話技術,在一次會話的多次請求間共享資料,將資料儲存在伺服器端的物件HttpSession中
2.Session的建立和獲取
Session的建立和獲取的api是一樣的
request.getSession()
-
-
之後呼叫都是獲取前面建立好的 Session 會話物件
3.Session域資料的處理
使用HttpSession物件處理資料時常用的三個api
- 根據指定的屬性名稱獲取指定的值,返回結果是Object需要強轉
- 繫結資料到此會話上,資料格式鍵/值對,name屬性名 value屬性值
- 移除繫結的資料,根據鍵(屬性名)移除
4.Session的生命週期
因為在 Tomcat 伺服器的配置檔案 web.xml中預設有以下的配置,它就表示配置了當前 Tomcat 伺服器下所有的 Session 超時配置預設時長為:30 分鐘
<session-config> <session-timeout>30</session-timeout> </session-config>
管理Session的生命週期時常用的三個api
- 設定 Session 的超時時間(以秒為單位),超過指定的時長,Session 就會被銷燬,值為負數時永不超時
- 獲取 Session 的超時時間
- 讓當前 Session 會話馬上超時無效
5.關於Session的兩個問題
1.當客戶端關閉後,伺服器不關閉,兩次獲取session是否為同一個?
-
-
如果需要相同,則可以建立Cookie,鍵為JSESSIONID,設定最大存活時間,讓cookie持久化儲存
2.客戶端不關閉,伺服器關閉後,兩次獲取的session是同一個?
-
-
session的鈍化:
-
在伺服器正常關閉之前,將session物件序列化到硬碟上
-
-
session的活化:
-
在伺服器啟動後,將session檔案轉化為記憶體中的session物件
-