一、session:是伺服器端會話技術,在一次會話的多次請求間共享資料,將資料儲存在伺服器端的物件中的(httpsession)。
二、httpsession物件的方法主要就是域的三個方法:
object getattribute(string name)
void setatrribute(strng name,object value)
removeattribute(string name)
session的獲取使用httpsession request.getseeion();進行獲取就可以了。
三、問題:伺服器如何確保在一次會話範圍內,多次獲取的session物件是同乙個物件?
session是依賴於cookie的,當jsp頁面沒有顯式禁止session的時候,在開啟瀏覽器第一次請求該jsp的時候,伺服器會自動為其建立乙個session,並賦予其乙個sessionid,傳送給客戶端的瀏覽器。以後客戶端接著請求本應用中其他資源的時候,會自動在請求頭上新增:(cookie:jsessionid=客戶端第一次拿到的session id)。
在每次請求時,在請求頭中cookie都會帶著這個session。使用request獲取的session都是同乙個。
四、細節:
1.當客戶端關閉後,伺服器不關閉,預設情況下兩次獲取的不是同乙個(session依賴於cookie,cookie都掛了,session還能是同乙個嗎?)。但是如果我們期望客戶端關閉之後,session也不會發生改變的話。可以使用。
cookie cookie = new cookie(「jsessionid」,session.getid());
cookie.setmaxage(int time);
response.addcookie(cookie);
手動設定cookie持久化存活,並將伺服器建立的session進行覆蓋,就可以長時間使用session儲存資訊了。
關閉瀏覽器後再次訪問,發現session並沒有改變。
但是在關閉伺服器之後,重啟之後還是發生了改變。
2.伺服器關閉之後獲取的session獲取不到同乙個,即使獲取到同乙個位址值,也不是同乙個session,只不過是因為隨機生成的位址相同罷了。
但是即使不是同乙個,也要想辦法確保儲存的資料不丟失。
session的鈍化:
*在伺服器正常關閉之前,將session物件系列化到硬碟上。
*在伺服器重啟之後,將session檔案轉化為記憶體中的session物件即可。
tomact已經自動完成了這一步。 (不用你管)
3.session什麼時候被銷毀?
1.伺服器關閉
2.session物件呼叫invalidate()。
3.session的預設失效時間是30分鐘。
但是我們可以手動配置
在tomcat的conf目錄下有乙個web.xml,在其中有個乙個子元素
可以看到其預設為30,可以對其進行修改。但是這樣修改之後,所有發布在本地伺服器上的web專案中的session的存活時間都會發生改變。
如果只是想單獨改變乙個web專案的,可以在web專案的web.xml進行配置
配置時間(分鐘)
五、session的特點:1.用於儲存一次會話多次請求見的資料,儲存在伺服器端。
2.session可以儲存任意型別任意大小的資料。
session與cookie的區別:session儲存資料在伺服器端。cookie儲存在客戶端。
session沒有資料大小限制,cookie有。
session資料安全,cookie因為儲存在客戶端,資料相對不太安全。
SESSION會話技術
以下對session會話技術詳解 要了解點http協議理解更佳 http請求頭和http相應頭 在session start的時候,瀏覽器會向伺服器發出請求 在請求的同時,如果是第一次apache會給瀏覽器分配乙個session id便識別,到瀏覽器下次請求時就會攜帶 apache分配的sessio...
會話技術 Session
一 概念 1.session 將會話中產生的資料儲存在服務端 是服務端技術 2.具體流程 1 瀏覽器第一次傳送請求需要儲存資料時,服務端獲取到需要儲存的資料,去伺服器內部檢查一下有沒有為當前瀏覽器服務的session 如果有就直接拿過來用,如果沒有session就建立乙個新的session拿過來用 ...
SESSION會話技術
以下對session會話技術詳解 要了解點http協議理解更佳 http請求頭和http相應頭 在session start的時候,瀏覽器會向伺服器發出請求 在請求的同時,如果是第一次apache會給瀏覽器分配乙個session id便識別,到瀏覽器下次請求時就會攜帶 apache分配的sessio...