Session
:在計算機中,尤爲是在網絡應用中,稱爲「會話控制」。Session 對象存儲特定用戶會話所需的信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。
會話狀態僅在支持 cookie 的瀏覽器中保留。
我用django登陸個人user,登陸進去,寫入user信息到session當中,我在服務器的信息能夠經過session_id來訪問session裏面存儲的user信息,若是session_id不存在,那麼用戶沒有登陸
session並不能在調試模式(Debug mode)下正常工做,這是由於session與調試模試下的重調用相沖突(有點相似firefox下著名的Firebug插件,使用Firebug插件分析網頁時,會在火狐瀏覽器以外單獨對該網頁發起請求,因此至關於同時訪問該網頁兩次)
session基礎
會話容許每一個訪問者存儲任意數據,這個數據下次訪問者訪問該網站。
Session表明服務器與瀏覽器的一次會話過程,這個過程是連續的,也能夠時斷時續的。
session是存儲在服務端的信息,cooike是保存在客戶端的信息
八、session是一個容器,能夠存放會話過程當中的任何對象。
s
ession由於請求(request對象)而產生,同一個會話中多個request共享了一session對象,能夠直接從請求中獲取到session對象。
session存放在cookie當中,在服務器經過session的算法生成session_id返回給客戶端,客戶端再經過session_id進行訪問
session的建立和使用總在服務端,而瀏覽器歷來都沒獲得過session對象。但瀏覽器能夠請求Servlet(jsp也是Servlet)來獲取session的信息。客戶端瀏覽器真正牢牢拿到的是session ID
經過session_id來獲取session對象
2)、當JSP頁面沒有顯式禁止session的時候,在打開瀏覽器第一次請求該jsp的時候,服務器會自動爲其建立一個session,並賦予其一個sessionID,發送給客戶端的瀏覽器。之後客戶端接着請求本應用中其餘資源的時候,會自動在請求頭上添加:
Cookie:JSESSIONID=客戶端第一次拿到的session ID
這樣,
服務器端在接到請求時候,就會收到session ID,並根據ID在內存中找到以前建立的session對象
,提供給請求使用。
下面是兩次請求同一個jsp,請求頭信息:
經過圖能夠清晰發現,第
二次請求的時候,已經添加session ID的信息。
三、Session刪除的時間是:
1)Session超時:超時指的是連續必定時間服務器沒有收到該Session所對應客戶端的請求,而且這個時間超過了服務器設置的Session超時的最大時間。
2)程序調用HttpSession.invalidate()
3)服務器關閉或服務中止
四、session存放在哪
裏:服務器端的內存中。不過session能夠經過特殊的方式作持久化管理。
session的id是從哪裏來的
,sessionID是如何使用的:當客戶端第一次請求session對象時候,服務器會爲客戶端建立一個session,並將經過特殊算法算出一個session的ID,用來標識該session對象,當瀏覽器下次(session繼續有效時)請求別的資源的時候,瀏覽器會偷偷地將sessionID放置到請求頭中,服務器接收到請求後就獲得該請求的sessionID,服務器找到該id的session返還給請求者(Servlet)使用。一個會話只能有一個session對象,對session來講是隻認id不認人。
6
、session會由於瀏覽器的關閉而刪除嗎?
不會,session只會經過上面提到的方式去關閉。