會話技術 Session

2021-09-27 07:39:08 字數 1981 閱讀 4607

一、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...