jsp內置對象(四)-----session對象

一、什麼是session數組

session表示客戶端與服務器的一次會話 Web中的session指的是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所通過的這段時間,也就是用戶瀏覽這個網站所花費的時間 從上述定義中能夠看到,session其實是一個特定的時間概念瀏覽器

(1)session是JSP的一個內置對象,是HttpSession類的實例。服務器

(2)從客戶打開瀏覽器並鏈接到服務器開始,到客戶關閉瀏覽器窗口斷開與服務器的鏈接,這一過程成爲一個會話。session

(3)當客戶在同一個網站的不一樣頁面之間進行切換並訪問時,服務器是經過session來判斷這些請求是否來自同一個客戶。jsp

(4)session通常有時間限制,長時間不操做可能會致使session失效。session失效後原session中保存的屬性值會所有丟失。網站

(5)setMaxInactiveInterval(int i)  該方法可直接設定session的生存時間,超過該時間session會從新建立。(單位:秒)對象

-------------------------------生命週期

二、session對象的經常使用方法有:ci

long getCreationTime() : 返回session的建立時間;資源

public String getId() : 返回session的惟一ID號(該ID在session生成時,由JSP引擎建立)

public Object setAttribute(String name,Object value) : 按照鍵值對的方式在該session會話中保存一個屬性(該屬性是一個對象類型)

public Object getAttribute(String name) : 返回指定名稱的屬性的值(若是該名稱的屬性不存在,則返回null)

String[] getValueNames() : 返回一個(包含在此session中全部可用屬性)的數組。

int getMaxInactiveInterval() : 返回一個時間,該時間表示當前session間隔多少時間以後會失效(單位:秒)。

 

三、session死亡發生在如下狀況:

1.session的持有者(即客戶端瀏覽器)在最大無活動等待時間(MaxInactiveInterval)內無任何響應或請求 2.session被調用invalidate()方法強制弊了 3.jsp服務器重起或發生中斷(此時應該是全部session都當了)

用戶關閉瀏覽器後標誌着

a.session將再也不發送請求到服務器 b.該session將不會有人調用他的invalidate()方法

因此,此時只能等待session本身超時死亡,若是設置了該session的MaxInactiveInterval爲-1,那麼這個session只有在第3種狀況下才能死了.能夠經過判斷seccion的ID編號來肯定是否爲同一我的

 

四、Session的生命週期

分爲三個階段.

首先是建立階段 當客戶端第一次訪問某個jsp或者Servlet時候,服務器會爲當前會話建立一個sessionID,不一樣會話都會有一個特定的sessionID,每次客戶端向服務器發送請求時,即客戶端要訪問別的超連接網頁時,都會將此sessionID攜帶過去,服務端會對此sessionID進行校驗,來判斷此session對象是屬於哪一個會話的.由於session對象是保存在服務器端的.

而後是活動階段 某次會話當中經過超連接打開新頁面屬於同一次會話. 只要當前會話頁面沒有所有關閉,從新打開新的瀏覽器窗口訪問同一項目資源時屬於同一次會話. 除非本次會話全部頁面都關閉後再從新訪問某個jsp或者Servlet將會建立新的會話.但要注意的是儘管建立了新的會話,但原有會話仍然存在,只是這個舊的sessionID仍然存在於服務器端,即session對象還在服務器端,只不過再也沒有客戶端會攜帶sessionID交予服務端校驗,等到超時session對象將會銷燬.即:建立了新的會話,並不意味着原有的會話就結束了,它還存在服務器端,等到設定的時間事後(即超時),便自動銷燬

最後是銷燬階段 Session的銷燬只有三種方式

1.調用session對象的invalidate()方法

2.Session過時(session超時意味着被銷燬)

3.服務器從新啓動

相關文章
相關標籤/搜索