Java Session 介紹;


為什么需要Session

這是為了填補 Http 協議的局限,當用戶去訪問一個頁面,服務端返回完了請求(如,你訪問完一個網頁,這個頁面將頁面內容,界面UI呈現給你),就算是結束了,就斷開了,服務端不再去追蹤客戶端(瀏覽器)的任務狀態,所以 Http 的每次請求都是獨立的,非連續的,Http 也稱為無狀態協議。那我們如果想在一個場合,或是一個特定過程,操作些用戶自己的數據,就會很麻煩,甚至很危險。比如你可以通過 url 傳參數的方式與服務器交互,並實現操作;

Session(會話) 的出現就解決了這樣的問題,Session是創建在服務端的,在一定的時間后,由服務端來消毀。在這段時間,客戶端與服務端的會話就會保持着,客戶端就會利用服務端上的 Session 信息來找到或操作一些數據;

如何使用 Session

Java Api 只給我們一種方式來 獲取 當前會話相關的 session:

HttpSession session = request.getSession();
//
HttpSession session = request.getSession(boolean);

設置值:

session.setAttribute("key", 值對象);

獲取值:

對象類型 obj = (對象類型)session.getAttribute("key");
//
String name = (String)session.getAttribute("key");

刪除 session 指定屬性健:

session.removeAttribute("key");

清除所有的session,使當前 session 完全失效:

session.invalidate();

session超時周期設置 

1. Tomcat 安裝位置 conf/web.xml :

<session-config>
        <session-timeout>30</session-timeout>
 </session-config>

30分種

2. Tomcat 安裝位置 conf/server.xml :

<Context path="/test" docBase="/test"  
  defaultSessionTimeOut="3600" isWARExpanded="true"  
  isWARValidated="false" isInvokerEnabled="true"  
  isWorkDirPersistent="false"/>

單位為 秒

3. Java 代碼設置:

HttpSession session = request.getSession();
session.setMaxInactiveInterval(1200);

20 分種:

其他說明: 

1. session 過期情況:

1>. 客戶端瀏覽器關閉:

2>. session 會話過期;

3>. 客戶端會話調用了 .invalidate();

2. 瀏覽器關閉與session是否還在;

當客戶端瀏覽器關閉后,session 在服務端還是會存在一定時間的,只是當瀏覽器器再次打開時,就會生成一個新的 session ,瀏覽器通過生成的 sessionid 屬性來 匹配服務端的 session; 那上次的session 雖然還在,但是就訪問不到了;

3. <% @ page session="false" %> 是什么情況?:

這句話的意思是,當前不能使用 session, 但是 頁面 session 還是可以創建的;

4. session 在什么時候 被創建:

在 程序 調用 HttpServletRequest.getSession(true) 時創建;如果 頁面沒有使用 <%@ page session="false"%> 時,在 jsp 頁面編譯成 Servlet 時,會自動 加上 HttpSession session = HttpServletRequest.getSession(true);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM