Java Web 學習 : session

什么是 session?

  • session 表示客戶端與服務器的一次會話。
  • Web 中的 session 指的是用戶在瀏覽某個網(wǎng)站時,從進入瀏覽器到關閉所經(jīng)過的這段時間,也就是用戶瀏覽這個網(wǎng)站說話費的時間。
  • 從上述定義中可以看到,session 實際上是一個特定的時間概念。
  • session 保存在服務器的內(nèi)存中。

session 對象

  • session 對象是一個 JSP 內(nèi)置對象
  • session 對象在第一個 JSP 頁面被轉(zhuǎn)載時自動創(chuàng)建,完成會話期管理。
  • 從一個客戶端打開瀏覽器并連接到服務器,到客戶端關閉瀏覽器離開這個服務器結束,被稱為一個會話。
  • 當一個客戶訪問一個服務器時,可能在會在服務器的幾個頁面之間切換,服務器應當通過某種辦法知道這是一個客戶,就需要 session 對象。
  • session 對象是 HttpSession 類的實例

session 對象的常用方法如下:

long getCreationTime() //返回 Session 創(chuàng)建時間
public String getId() //返回 session 創(chuàng)建是 JSP 引擎為它設的唯一 ID 號
public Object setAttribue(String name, Object value) //使用指定對象綁定到此會話
public Object getAttribute(String name) //返回與此會話中的指定名稱綁定在一起的對象,如果沒有對象綁定該名稱,則返回 null 
String[] getValueNames() //返回一個包含此 Session 所有可用屬性的數(shù)組
int getmaxInactiveInterval() //返回兩次請求間隔多長時間此 session 被取消(單位 s)

session 生命周期

創(chuàng)建
當客戶端第一次訪問某個 JSP 或者 Servlet 的時候,服務器會為當前會話創(chuàng)建一個 SessionId,每次客戶端向服務器發(fā)送請求時,都會將此 SessionId 攜帶過去,服務端會對此 SessionId 進行校驗。

活動:

  • 某次會話當中通過此超鏈接打開的新頁面屬于同一個會話。
  • 只要當前繪畫沒有全部關閉,重新打開新的瀏覽器窗口訪問同一項目資源時屬于同一會話。
  • 除非本次會話的所有頁面都關閉后再重新訪問某個 JSP 或者 Servlet 將會床架新的會話。

note:

原有的會話都還存在,只是這個舊的 SessionId 仍然存在與服務端,只不過再也沒有客戶端會接待它然后交予服務端校驗。

銷毀:
Session 的銷毀只有三種方式:

  1. 調(diào)用了 session.invalidate() 方法
  2. Session 過期(超時)
  3. 服務器重新啟動

超時
Tomcat 默認 session 超時時間為 30 分鐘
設置 session 超時有兩種方式:

  1. session.setMaxInactiveInterval(time): //單位 s
  2. 在 web.xml 配置
<session-config>
<session-timeout>
10
</session-timeout>
</session-config> //單位 min
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容