實現會話跟蹤的技術有哪些


實現會話跟蹤的技術有哪些

 

由於HTTP協議本身是無狀態的,服務器為了區分不同的用戶,就需要對用戶會話進行跟蹤,簡單的說就是為用戶進行登記,為用戶分配唯一的ID,下一次用戶在請求中包含此ID,服務器據此判斷到底是哪一個用戶。 
①URL 重寫:在URL中添加用戶會話的信息作為請求的參數,或者將唯一的會話ID添加到URL結尾以標識一個會話。 
②設置表單隱藏域:將和會話跟蹤相關的字段添加到隱式表單域中,這些信息不會在瀏覽器中顯示但是提交表單時會提交給服務器。 
這兩種方式很難處理跨越多個頁面的信息傳遞,因為如果每次都要修改URL或在頁面中添加隱式表單域來存儲用戶會話相關信息,事情將變得非常麻煩。 
③cookie:cookie有兩種,一種是基於窗口的,瀏覽器窗口關閉后,cookie就沒有了;另一種是將信息存儲在一個臨時文件中,並設置存在的時 間。當用戶通過瀏覽器和服務器建立一次會話后,會話ID就會隨響應信息返回存儲在基於窗口的cookie中,那就意味着只要瀏覽器沒有關閉,會話沒有超 時,下一次請求時這個會話ID又會提交給服務器讓服務器識別用戶身份。會話中可以為用戶保存信息。會話對象是在服務器內存中的,而基於窗口的cookie 是在客戶端內存中的。如果瀏覽器禁用了cookie,那么就需要通過下面兩種方式進行會話跟蹤。當然,在使用cookie時要注意幾點:首先不要在 cookie中存放敏感信息;其次cookie存儲的數據量有限(4k),不能將過多的內容存儲cookie中;再者瀏覽器通常只允許一個站點最多存放 20個cookie。當然,和用戶會話相關的其他信息(除了會話ID)也可以存在cookie方便進行會話跟蹤。 
④HttpSession:在所有會話跟蹤技術中,HttpSession對象是最強大也是功能最多的。當一個用戶第一次訪問某個網站時會自動創建 HttpSession,每個用戶可以訪問他自己的HttpSession。可以通過HttpServletRequest對象的getSession方 法獲得HttpSession,通過HttpSession的setAttribute方法可以將一個值放在HttpSession中,通過調用 HttpSession對象的getAttribute方法,同時傳入屬性名就可以獲取保存在HttpSession中的對象。與上面三種方式不同的 是,HttpSession放在服務器的內存中,因此不要將過大的對象放在里面,即使目前的Servlet容器可以在內存將滿時將HttpSession 中的對象移到其他存儲設備中,但是這樣勢必影響性能。添加到HttpSession中的值可以是任意Java對象,這個對象最好實現了 Serializable接口,這樣Servlet容器在必要的時候可以將其序列化到文件中,否則在序列化時就會出現異常。


免責聲明!

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



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