Session的工作原理
session是服務(wù)器端的一個集合,可以存儲任何東西。session最重要的特性,是可以識別客戶。
1.Session的工作原理
當(dāng)我們的Servlet需要使用Session時,執(zhí)行下面的代碼
HttpSession session = request.getSession();//取出session session.setAttribute("goods1","Scoat");//session存數(shù)據(jù) session.getAttribute("goods1");//session取數(shù)據(jù)如果是第一次取session,服務(wù)器會創(chuàng)建一個session對象(session本身是一個map集合),并且存入服務(wù)器的session集合中以sessionId為標(biāo)識鍵,也就是根據(jù)sessionId即可取到對應(yīng)session的引用。同時使用session Servlet還獲得了一個sessionId,在響應(yīng)時把這個sessionId以cookie的形式發(fā)給了客戶端。如果客戶訪問其它同一域的Servlet,這個sessionId會跟著請求上傳到服務(wù)器。那么如果請求的另一個Servlet也要使用session,會先檢查有沒有這個保存sessionId的Cookie,如果有則直接到session集合中取對應(yīng)的session引用返回給要使用的Servlet,所以,只要客戶端存在這個sessionId,不管請求哪個Servlet,都可以拿到同一個session。所以Session就可以給不同的請求存儲數(shù)據(jù)。
2.Session過期
要保證session能夠跨請求存儲數(shù)據(jù)必須保證下面兩個條件必須滿足
(1).客戶瀏覽器不能關(guān)閉
因為session會給客戶保存一個sessionId,這個id是作為臨時cookie存在客戶瀏覽器緩存當(dāng)中,如果關(guān)閉瀏覽器,緩存就沒了,sessionId自然也就消失了。重新打開瀏覽再請求,就是一個全新的請求,服務(wù)器會創(chuàng)建一個新的session,之前的session就沒法用了。
(2).請求不能超過session的過期時間
服務(wù)器的session如果始終沒有使用,保留著就是浪費服務(wù)器的資源,所以服務(wù)器會定期檢查session的最后訪問時間,如果這個時間超出session設(shè)置的過期時間,服務(wù)器就會銷毀這個session,那么客戶端即使把sessionId又傳上來,服務(wù)器也找不到它的session了,只會再重新創(chuàng)建一個新的session。
3.Session生命周期的操作方法
session.setMaxInactiveInterval(20 * ?60);//設(shè)置session過期時間 session.invalidate();//銷毀session的方法 session.getCreationTime();//獲得session的創(chuàng)建時間 session.getLastAccessedTime();//獲得session最后一次被使用的時間總結(jié)
以上是生活随笔為你收集整理的Session的工作原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中文linux(Ubuntu)下让dat
- 下一篇: 对于自我的反省 - 对底层人民认知产