什麼是Session?
- session表示客戶端與服務器的一次會話
- Web中的session指的是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所通過的這段時間,也就是用戶瀏覽這個網站所花費的時間
- 從上述定義中能夠看到,session實際是一個特定的時間概念。
- session保存在服務器的內存中,而且爲不一樣的用戶保存不一樣的session。
以下購物流程爲一個session。web
session對象
- session對象是一個JSP內置對象。
- session對象在第一個JSP頁面被裝載時自動建立,完成會話期管理。
- 從一個客戶打開瀏覽器並鏈接到服務器開始,到客戶端關閉瀏覽器離開這個服務器結束,被稱爲一個會話。
- 當一個客戶訪問服務器時,可能會在服務器的幾個頁面之間切換,服務器應當經過某種辦法知道這是一個客戶,這就須要session對象。
- session對象是HttpSession類的實例。
session對象的經常使用方法:
- long getCreationTime():返回SESSION建立時間
- public String getId():返回SESSION建立時JSP引擎爲它設的惟一ID號。
- public Object setAttribute(String name, Object value):使用指定名稱將對象綁定到此會話。
- public Object getAttribute(String name):返回與此會話中指定名稱綁定在一塊兒的對象,若是沒有對象綁定在該名稱下,則返回null
- String[] getValueNames():返回一個包含此SESSION中全部可用屬性的數組。
- int getMaxInactiveInterval():返回兩次請求間隔多長時間此SESSION被取消(單位秒)
session的生命週期:
建立:數組
當客戶端第一次請求某個jsp或者Servlet的時候,服務器會爲當前會話建立一個SessionId,每次客戶端向服務器發送請求時,都會將此SessionId攜帶過去,服務器會對此SessionId進行校驗。瀏覽器
活動:服務器
- 某次會話當中經過超連接打開新頁面屬於同一個會話。
- 只要當前頁面沒有所有關閉,從新打開新的瀏覽器訪問同一個項目資源時屬於同一會話。
- 除非本次會話的全部頁面都所有關閉後再從新訪問某個Jsp或者Servlet將會建立新的會話。
注意事項:注意原有會話還存在,只是這個舊的SessionId仍然存在於服務端,只不過再也沒有客戶端會攜帶它而後交予服務器校驗。這個session設置的超時時間過了服務器會銷燬此sessionId。session
銷燬:jsp
Session的銷燬只有三種方式:網站
- 調用了session.invalidate()方法。
- Session過時(超時)
Tomcat默認的超時時間爲30分鐘。spa
設置超時時間的兩種方式:xml
-
- session.setMaxInactiveInterval(時間)://單位是秒
- 在web.xml中配置
<session-config>對象
<session-timeout>10</session-timeout>
</session-config> 單位是分鐘
3.服務器從新啓動。