問:瀏覽器訪問一個站點,產生一個session,接著進行以下操作:
1、在同一個瀏覽器新打開一個tab卡,訪問同一站點,此時幾個session
2、將新打開的tab卡拖拽出來,成為兩個瀏覽器的時候,創建了幾個session
3、換一個瀏覽器,訪問同一個站點,此時幾個session
4、HttpSession、HttpServletRequest.getSession()、HttpServletRequest.getSession(true)、HttpServletRequest.getSession(false)是不是同一個session?
先看產生的第一個session
訪問本地的tomcat,將第一次的sessionId存如session,可以看到四個sessionId相同。
新打開tab,比較兩個sessionId
發現兩個tab卡的sessionId也是相同的
拖拽出來之后
發現兩個sessionId依然相同
換FF再打開
終于和之前的不一樣了。
總結
1.對于同一個瀏覽器,在不清除cookie、緩存、關閉瀏覽器的前提下,如果沒到失效時間,session都是同一個
2.拖拽出來之后,session依然是同一個
3.換一個瀏覽器,session改變
4.HttpSession、HttpServletRequest.getSession()、HttpServletRequest.getSession(true)、HttpServletRequest.getSession(false)獲取到的是同一個session
題外話
session存在于服務端,由于http是無狀態的,服務端無法區別請求由哪個客戶端發送,最終還是依賴cookie,每次發送請求攜帶一個JSESSIONID,即服務端獲取的sessionId,唯一標識一個客戶端請求。
?