Servlet中的資料範圍之Session

2021-08-25 12:33:35 字數 1548 閱讀 6015

最近做到了部落格這一塊,用到了servlet

和jsp

,當乙個使用者通過在登陸頁面輸入使用者名稱和密碼登陸到個人中心,然後通過個人中心去瀏覽其它相關頁面,在這整個過程需要用到該使用者的相關資訊,這時可以把使用者資訊存入到session

中,以方便在整個會話過程中取得使用者資訊,由於session

的特殊性,現特以做個總結如下:

由於http

協議連線的無狀態性,才使得session

的不得已而產生。既然web

應用並不了解有關同一使用者以前請求的資訊,那麼解決這個問題的乙個辦法是使用servlet/jsp

容器提供的會話跟蹤功能,servlet api

規範定義了乙個簡單的httpsession

介面,通過它我們可以方便地實現會話跟蹤。

介面提供了儲存和返回標準會話屬性的方法。標準會話屬性如會話識別符號、應用資料等,都以「名字-

值」對的形式儲存在伺服器端。也就是說,httpsession

介面提供了一種把物件儲存到記憶體、在同一使用者的後繼請求中提取這些物件的標準辦法。在會話中儲存資料的方法是setattribute(string s, object o)

,從會話提取原來所儲存物件的方法是getattribute(string s)。

在伺服器端,每當新使用者請求乙個使用了httpsession

物件的jsp

頁面,servlet/jsp

容器除了發回應答頁面之外,它還要向瀏覽器傳送乙個特殊的數字。這個特殊的數字稱為「會話識別符號」,它是乙個唯一的使用者識別符號。此後,httpsession

物件就駐留在記憶體之中(

這當然是在伺服器端)

,等待同一使用者返回時再次呼叫它的方法。

在客戶端,瀏覽器儲存會話識別符號,並在每乙個後繼請求中把這個會話識別符號傳送給伺服器。會話識別符號告訴jsp

容器當前請求不是使用者發出的第乙個請求,伺服器以前已經為該使用者建立了httpsession

物件。此時,jsp

容器不再為使用者建立新的httpsession

物件,而是尋找具有相同會話識別符號的httpsession

物件,然後建立該httpsession

物件和當前請求的關聯。

會話識別符號以cookie

的形式在伺服器和瀏覽器之間傳送,標準會話屬性在伺服器端也是以會話的形式存在的,並且這個cookie

的生命週期只是臨時的,即會話結束後就自動消失,沒有為它指定固定的生命週期,因此有人說session

是基於cookie

的技術。另外,如果客戶端不支援cookie

,運用url

重寫機制來保證會話識別符號傳回伺服器。

還有一點,session

不像cookie

那樣擁有路徑訪問的問題。session

下的servlet/jsp

可以共享同乙個session

。當然,session

和視窗的對應關係也是受時間限制的,至於多長時間,可以在伺服器的conf/web.xml

中配置,預設為30

分鐘。

servlet內建物件的作用範圍

servlet內建物件的作用範圍及訪問方法 2006 12 29 20 23 59 那麼,servletconfig引數和servletcontext引數到底應該如何使用,如何取得?一般來說,對整個應用的配置,為了不使用 硬編碼 應該配置為servletcontext引數,比如字符集設定。chars...

mysql中資料的儲存範圍

1 int 最多儲存10位數字,即 2147683648 到2147683647 4位元組 當儲存的11111111111位數字後,將預設儲存int的最大值 2147683647 當儲存的 11111111111位數字後將預設儲存int的最小值 2147683648 2 char 定長字串 0 25...

servlet中的跳轉

在servlet中,從乙個servlet跳到另乙個servlet,有基於客戶端和伺服器兩個不同的方法。1.基於客戶端,及傳送301,進行重定向 response.sendredirect url 其中 url 是位址的字串,以 開頭是根目錄開始,否則是相對位址。2.基於伺服器,進行分派。reques...