天天看點

到底建立了幾個Session

問:浏覽器通路一個站點,産生一個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相同。
到底建立了幾個Session

新打開tab,比較兩個sessionId

到底建立了幾個Session

發現兩個tab卡的sessionId也是相同的

拖拽出來之後

發現兩個sessionId依然相同
到底建立了幾個Session

換FF再打開

終于和之前的不一樣了。
到底建立了幾個Session

總結

1.對于同一個浏覽器,在不清除cookie、緩存、關閉浏覽器的前提下,如果沒到失效時間,session都是同一個

2.拖拽出來之後,session依然是同一個

3.換一個浏覽器,session改變

4.HttpSession、HttpServletRequest.getSession()、HttpServletRequest.getSession(true)、HttpServletRequest.getSession(false)擷取到的是同一個session

題外話

session存在于服務端,由于http是無狀态的,服務端無法差別請求由哪個用戶端發送,最終還是依賴cookie,每次發送請求攜帶一個JSESSIONID,即服務端擷取的sessionId,唯一辨別一個用戶端請求。
到底建立了幾個Session

繼續閱讀