Session會話技術 - JavaWeb

JavaWeb入門

一.概念


  1. Session是一個接口(HttpSession)
  2. Session是會話. 它是用來維護一個客戶端和服務器之間關聯的一種技術.
  3. 每個客戶端都有自己的一個Session會話
  4. Session會話中, 我們經常用來保存用戶登陸之後的信息.

二.Session應用


2.1 Session創建

// 第一次則Session則新創建, 否則獲取Session對象
HttpSession session = req.getSession();
// 判斷當前Session會話, 是否是新創建的
boolean isNew = session.isNew();
// 獲取Session會話的唯一標識 id
String id = session.getId();

2.2 Session域

// 往Session域對象中存值
req.getSession().setAttribute("key", "value");

// 獲取Session
Object attribute = req.getSession().getAttribute("sessin");
// 將獲取的Session值返回給客戶端	
resp.getWrite().write("從Session中獲取的session數據是:" + attribute);
// 將輸出 '從Session中獲取的session數據是:value'

2.3 Session生命週期

public void setMaxInactiveInterval(int interval)

指定在 servlet 容器使此會話失效之前客戶端請求之間的時間間隔,以秒爲單位。負數時間指示會話永遠不會超時。

該方法是給指定頁面設置sesssion的超時間隔時長

public void invalidate()

使此會話無效,然後取消對任何綁定到它的對象的綁定。

public int getMaxInactiveInterval()

返回 servlet 容器在客戶端訪問之間將使此會話保持打開狀態的最大時間間隔,以秒爲單位。在此間隔之後,servlet 容器將使會話無效。可使用 setMaxInactiveInterval 方法設置最大時間間隔。負數時間指示會話永遠不會超時。

Session默認的超時時長是30分鐘

如果修改默認值的話, 在web工程中修改web.xml文件,

<session-config>
	<session-timeout>20</session-timeout>
</session-config>

! 注意 ! : session的超時指的是: 客戶端兩次請求的最大間隔時長

如果期間再次發送請求, 則會重新計算間隔時長.

瀏覽器和Session的關聯


在這裏插入圖片描述

Session的創建基於Cookie, 保存在Cookie的 JSESSION 中, 如果瀏覽器關閉, 雖然session沒有超時, 但是cookie已經自動銷燬, 所以重新打開需要重新創建Seesion

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章