15-碼蟻JavaWeb之會話技術session
阿新 • • 發佈:2018-12-05
學習地址:
撩課-JavaWeb系列1之基礎語法-前端基礎
撩課-JavaWeb系列2之XML
撩課-JavaWeb系列3之MySQL
撩課-JavaWeb系列4之JDBC
撩課-JavaWeb系列5之web伺服器-idea
課程下載地址:
連結:https://pan.baidu.com/s/1qilY0kIpgnxuLELxjNIQxw 提取碼:4s9t
session簡介
Session技術是將資料儲存在伺服器端的技術
會為每個客戶端都建立一塊記憶體空間儲存客戶的資料
客戶端需要每次都攜帶一個標識ID去伺服器中尋找屬於自己的記憶體空間
Session需要藉助於Cookie儲存客戶的唯一性標識SESSIONID
Session如何辦到在一個servlet當中存資料
在別的servlet當中取出當初儲存的資料
每一個使用者訪問伺服器時,會給該使用者分配他自己對應的儲存空間
並且建立的儲存空間有一個編號我們稱為SessionID
第一次訪問時, 會把對應的sessionID以Cookie的形式寫給瀏覽器
下次再訪問時, 會攜帶sessionID,找到當初建立的那個儲存空間
在對應的儲存空間當中取出資料
如何獲取Session物件
HttpSession session = request.getSession(); 獲得專屬於當前會話的Session物件 如果伺服器端沒有該會話的Session物件,會建立一個新的Session返回 如果已經有了屬於該會話的Session直接將已有的Session返回 本質就是根據SESSIONID判斷該客戶端是否在伺服器上已經存在session了
怎麼樣向session當中存取資料
Session物件也是一個域物件
session.setAttribute(String name,Object obj);
session.getAttribute(String name);
session.removeAttribute(String name);
已經學習的其它兩個域物件
servletContext域
request域
session的生命週期
`建立` 第一次執行request.getSession()時建立 `銷燬` 伺服器關閉時 session過期/失效(預設30分鐘) 是從最後一次操作結束時計時 手動銷燬 session.invadate 瀏覽器關閉,session就銷燬,這句話是不正確的 `作用範圍` 預設在一次會話中, 也就是說在, 一次會話中任何資源公用一個session物件
JsessioID持久化
預設情況下,
第一次獲取session物件時,
會幫你建立一個session,
可以獲取該Session的ID
會自動的把id寫到cookie當中
`存在的問題`
第一次訪問sevlet1時儲存一些資料
在第二個servlet當中直接取資料,可以直接取到
把瀏覽器關閉
直接到第二個servlet當中取資料,發現取不到資料了。
`原因`
因為訪問的時候要求帶著jsessionID.
由於預設情況下,
儲存cookie是會話級別的,
關閉瀏覽器,就沒有了。
所以再次開啟瀏覽器。
訪問資源時,沒有jsessionID.
就會建立一個新的session. 就取不到資料了
`解決辦法`
在寫資料時,自己手動去把sessionID寫到cookie當中
寫的時候,設定持久化時間
注意,key值一定是和它自動生成的key值是一樣的
博文全套 視訊講解 點選以下連結檢視
https://study.163.com/course/courseMain.htm?courseId=1005981003&share=2&shareId=1028240359