session
session表示客戶端與伺服器的一次會話
Web中的session指的是使用者在瀏覽某個網站時,從進入網站到瀏覽器關閉所進過的這段時間,也就是使用者瀏覽這個網站所花費的時間
從上述定義中可以看到,session實際上是一個特定的時間概念
在伺服器的記憶體當中儲存著不同使用者的session,session和使用者是一一對應的。
session物件
session物件是一個JSP內建物件。
session物件在第一個JSP頁面被裝載時自動建立,完成會話期管理。
從客戶端開啟瀏覽器並連線到伺服器開始,到客戶端關閉瀏覽器離開這個伺服器結束,被稱為一個會話。
當一個客戶訪問一個伺服器,可能會在伺服器的幾個頁面之間切換,伺服器應當通過某種辦法知道這是一個客戶,就需要session物件。
session物件是HttpSession類的例項。
session物件常用方法如下:
long getCreationTime() 返回session建立時間
String getId() 返回session建立時JSP引擎為他設的唯一ID號
void setAttribute(String name, Object value) 使用指定名稱將物件繫結到此會話
Object getAttribute(String name) 返回此會話中的指定名稱繫結在一起的物件,如果沒有物件繫結在該名稱下,則返回null
String[] getValueNames() 返回一個包含此session中所有可用屬性的陣列
int getMaxInactiveInterval() 返回兩次請求間隔多長時間此session被取消(單位:秒)
session的生命週期
session的生命週期包括三個階段:建立、活動、銷燬
建立:
當客戶端第一次訪問某個jsp或者servlet的時候,伺服器會為當前會話建立一個SessionId,每次客戶端向伺服器傳送請求時,都會將此sessionId攜帶過去,服務端會對此sessionId進行校驗。
活動:
某次會話當中通過超連結開啟的新頁面屬於同義詞會話。
只要當前頁面沒有全部關閉,重新開啟新的瀏覽器視窗訪問同一專案資源時屬於同一次會話。
本次會話的所有頁面都關閉後再重新訪問某個Jsp或者Servlet將會建立新的會話。
注意事項:注意原有會話還存在,只是這個舊的SessionID任然存在服務端,只不過再也沒有客戶端會攜帶它然後交予服務端校驗。
銷燬:
Session的銷燬只有三種方式:
1.呼叫了session.invalidate()方法
2.session過期(超時)
3.伺服器重新啟動
Tomcat預設session超時時間為30秒。
設定session超時時間有兩種方式:
1.session.setMaxInactiveInterval(時間);//單位是秒
2.在web.xml中配置
<session-config>
<session-timeout>
10
</session-timeout>
</session-config> // 單位是分鐘
(注:web.xml文件在專案的WEB-INF目錄下)