複製鏈接
請複製以下鏈接發送給好友

HttpSession

鎖定
HttpSession是Java平台session機制的實現規範,因為它僅僅是個接口,具體到每個web應用服務器的提供商,除了對規範支持之外,仍然會有一些規範裏沒有規定的細微差異。這裏我們以ORACLE的Weblogic Server8.1作為例子來演示
外文名
HttpSession
性    質
接口
含    義
Java平台session機制的規範
存儲位置
存儲在內存裏

HttpSession詞語釋義

理解javax.servlet.http.HttpSession
首先,Weblogic Server提供了一系列的參數來控制它的HttpSession的實現,包括使用cookie的開關選項,使用URL重寫的開關選項,session持久化的設置,session失效時間的設置,以及針對cookie的各種設置,比如設置cookie的名字、路徑、域, cookie的生存時間等。
一般情況下,session都是存儲在內存裏,當服務器進程被停止或者重啓的時候,內存裏的session也會被清空,如果設置了session的持久化特性,服務器就會把session保存到硬盤上,當服務器進程重新啓動或這些信息將能夠被再次使用, Weblogic Server支持的持久性方式包括文件、數據庫、客户端cookie保存和複製。
複製嚴格説來不算持久化保存,因為session實際上還是保存在內存裏,不過同樣的信息被複制到各個cluster內的服務器進程中,這樣即使某個服務器進程停止工作也仍然可以從其他進程中取得session
cookie生存時間的設置則會影響瀏覽器生成的cookie是否是一個會話cookie。默認是使用會話cookie。有興趣的可以用它來試驗我們在第四節裏提到的那個誤解。
cookie的路徑對於web應用程序來説是一個非常重要的選項,Weblogic Server對這個選項的默認處理方式使得它與其他服務器有明顯的區別。後面我們會專題討論。
HttpSession類它提供了setAttribute()和getAttribute()方法存儲和檢索對象。HttpSession提供了一個會話ID關鍵字,一個參與會話行為的客户端在同一會話的請求中存儲和返回它。servlet引擎查找適當的會話對象,並使之對當前請求可用。HttpServletRequest 接口提供了以下方法來獲取HttpSession實例。
public HttpSession getSession() :該方法取得請求所在的會話。
public HttpSession getSession(Boolean create):返回當前請求的會話。如果當前請求不屬於任何會話,而且create參數為true,則創建一個會話,否則返回null。此後所有來自同一個的請求都屬於這個會話,通過它的getSession返回的是當前會話。

HttpSession方法介紹

public void setAttribute(String name,Object value)
value對象以name名稱綁定到會話
public object getAttribute(String name)
取得name的屬性值,如果屬性不存在則返回null
public void removeAttribute(String name)
從會話中刪除name屬性,如果不存在不會執行,也不會拋出錯誤.
public Enumeration getAttributeNames()
返回和會話有關的枚舉值
public void invalidate()
使會話失效,同時刪除屬性對象
public Boolean isNew()
用於檢測當前客户是否為新的會話
public long getCreationTime()
返回會話創建時間
public long getLastAccessedTime()
返回在會話時間內web容器接收到客户最後發出的請求的時間
public int getMaxInactiveInterval()
返回在會話期間內客户請求的最長時間為秒
public void setMaxInactiveInterval(int seconds)
允許客户客户請求的最長時間
ServletContext getServletContext()
返回當前會話的上下文環境,ServletContext對象可以使Servletweb容器進行通信
public String getId()
返回會話期間的識別號