JavaWeb中session創建與銷毀的問題


今天遇到一個奇怪的問題,自己添加了一個session的監聽,用來監聽在線的人數。但打開瀏覽器時一直沒有走進這個監聽中來。最后百度找到了原因:

我們一直存在一個誤區,javaweb中的session什么時候創建?我一直認為是第一次與瀏覽器建立連接的時候,就自動創建一個session。其實不然!

只有在server端的代碼調用request.getSession(true)這個方法時,才互創建一個session。其中true表示,如果存在一個相同的session,則直接返回,如果不存在,則創建一個新的session;false表示,如果不存在,則返回null。而我的代碼中比較簡單,沒有用到session存儲東西,所有一直沒調用request.getSession(true)這個方法。

在攔截器中加了這句話之后,問題又來了,后面的每個請求,都會去創建一個session,這與之前的理解的一個瀏覽器對應一個session又相沖突了。猜測是因為每次請求的sessionId不同導致的,應該是在請求響應的時候沒有設置cookie導致的,HTTP請求是無狀態的,每個請求對server來說都是新的。

為了搞清內部原理,決定跟着源碼繼續看下session具體的創建和銷毀邏輯吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM