1. 程式人生 > >15-碼蟻JavaWeb之會話技術session

15-碼蟻JavaWeb之會話技術session

學習地址:
撩課-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