[推薦]session原理詳解

來源:互聯網
上載者:User
關於HttpSession的誤解實在是太多了,本來是一個很簡單的問題,怎會搞的如此的複雜呢?下面說說我的理解吧:
1、HTTP協議本身是“串連-請求-應答-關閉串連”模式的,是一種無狀態協議(HTTP只是一個傳輸協議);
2、Cookie規範是為了給HTTP增加狀態跟蹤用的(如果要精確把握,建議仔細閱讀一下相關的RFC),但不是唯一的手段;
3、所謂Session,指的是用戶端和服務端之間的一段互動過程的狀態資訊(資料);這個狀態如何界定,生命期有多長,這是應用本身的事情;
4、由於B/S計算模型中計算是在伺服器端完成的,用戶端只有簡單的顯示邏輯,所以,Session資料對用戶端應該是透明的不可理解的並且應該受控於服務端;Session資料要麼儲存到服務端(HttpSession),要麼在用戶端和服務端之間傳遞(Cookie或url rewritting或Hidden input);
5、由於HTTP本身的無狀態性,服務端無法知道用戶端相繼發來的請求是來自一個客戶的,所以,當使用服務端HttpSession儲存會話資料的時候用戶端的每個請求都應該包含一個session的標識(sid, jsessionid 等等)來告訴服務端;
6、會話資料儲存在服務端(如HttpSession)的好處是減少了HTTP請求的長度,提高了網路傳輸效率;用戶端session資訊儲存則相反;
7、用戶端Session儲存只有一個辦法:cookie(url rewritting和hidden input因為無法做到持久化,不算,只能作為交換session id的方式,即a method of session tracking),而服務端做法大致也是一個道理:容器有個session管理器(如tomcat的org.apache.catalina.session包裡面的類),提供session的生命週期和持久化管理並提供訪問session資料的api;
8、使用服務端還是用戶端session儲存要看應用的實際情況的。一般來說不要求使用者註冊登入的公用服務系統(如google)採用cookie做用戶端session儲存(如google的使用者喜好設定),而有使用者管理的系統則使用服務端儲存。原因很顯然:無需使用者登入的系統唯一能夠標識使用者的就是使用者的電腦,換一台機器就不知道誰是誰了,服務端session儲存根本不管用;而有使用者管理的系統則可以通過使用者id來系統管理使用者個人資料,從而提供任意複雜的個人化服務;
9、用戶端和服務端的session儲存在效能、安全性、跨站能力、編程方便性等方面都有一定的區別,而且優劣並非絕對(譬如TheServerSide號稱不使用HttpSession,所以效能好,這很顯然:一個具有上億的訪問使用者的系統,要在服務端資料庫中檢索出使用者的偏好資訊顯然是低效的,Session管理器不管用什麼資料結構和演算法都要耗費大量記憶體和CPU時間;而用cookie,則根本不用檢索和維護session資料,伺服器可以做成無狀態的,當然高效);
所謂的“會話cookie”簡單的說就是沒有明確指明有效期間的cookie,僅在瀏覽器當前進程生命期內有效,可以被後繼的Set-Cookie操作清除掉;holykeeper還是很有敬業精神的!記得3年前偶剛剛開始做J2EE的時候就做過同樣的事情,不過我用的是Effetech HTTP Sniffer和Charles HTTP Proxy,另外,我一口氣把HTTP RFC 2616,Cookie RFC,URI & URL,MIME等十多個與Web相關的協議標準通讀了一遍,在之後的工作中就再也沒有被具體的技術問題糾纏過。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.