session超時時間的設定
在Java Web開發中,Session為我們提供了很多方便,Session是由瀏覽器和伺服器之間維護的。Session超時理解為:瀏覽器和伺服器之間建立了一個Session,由於客戶端長時間(休眠時間)沒有與伺服器互動,伺服器將此Session銷燬,客戶端再一次與伺服器互動時之前的Session就不存在了。
設定Session超時時間方式:
方式一:
在web.xml中設定session-config如下:
<session-config>
<session-timeout>2</session-timeout>
</session-config>
即客戶端連續兩次與伺服器互動間隔時間最長為2分鐘,2分鐘後session.getAttribute()獲取的值為空
API資訊:
session.getCreationTime() 獲取session的建立時間
session.getLastAccessedTime() 獲取上次與伺服器互動時間
session.getMaxInactiveInterval() 獲取session最大的不活動的間隔時間,以秒為單位120秒。
方式二:
在Tomcat的/conf/web.xml中session-config,預設值為:30分鐘
<session-config>
<session-timeout>30</session-timeout>
</session-config>
方式三:
在Servlet中設定
HttpSession session = request.getSession();
session.setMaxInactiveInterval(60);//單位為秒
說明:
1.優先順序:Servlet中API設定 > 程式/web.xml設定 > Tomcat/conf/web.xml設定
2.若訪問伺服器session超時(本次訪問與上次訪問時間間隔大於session最大的不活動的間隔時間)了,即上次會話結束,但伺服器與客戶端會產生一個新的會話,之前的session裡的屬性值全部丟失,產生新的sesssionId
3.客戶端與伺服器一次有效會話(session沒有超時),每次訪問sessionId相同,若程式碼中設定了session.setMaxInactiveInterval()值,那麼這個session的最大不活動間隔時間將被修改,並被應用為新值。
4.Session的銷燬(代表會話週期的結束):在某個請求週期內呼叫了Session.invalidate()方法,此請求週期結束後,session被銷燬;或者是session超時後自動銷燬;或者客戶端關掉瀏覽器
5.對於JSP,如果指定了<%@ page session="false"%>,則在JSP中無法直接訪問內建的session變數,同時也不會主動建立session,因為此時JSP未自動執行request.getSession()操作獲取session。
總結:
在程式開發過程中,我們可以在客戶端每次與伺服器互動時檢查SessionID(Session中屬性值,非HttpServlet環境開發中也可以用其它的Key值代替),用於會話管理。
相關文章
- weblogic設定超時時間Web
- 為jQuery的$.ajax設定超時時間jQuery
- HttpClient設定聯網超時時間HTTPclient
- C# UdpClient 設定超時時間C#UDPclient
- 不同使用者,不同的session超時時間Session
- C#如何設定session過期時間C#Session
- 使用requests庫解決Session物件設定超時的問題Session物件
- tomcat 設定session過期時間(四種方式)TomcatSession
- SSH 超時設定
- MongoDB 超時設定MongoDB
- oracleraccrs超時設定Oracle
- 【Linux-時間設定】-設定時區並調整時間Linux
- quartz定時任務時間設定quartz
- **java設定一段程式碼執行超時時間(轉)**Java
- linux-wdt 原理和任意超時時間設定的解決方法Linux
- C++ 之Socket 程式設計 send rev 阻塞設定 阻塞超時時間C++程式設計
- 設定時間格式
- ECS設定時區與時間
- CSocket設定超時(轉)
- HttpClient設定超時(轉)HTTPclient
- python之為函式執行設定超時時間(允許函式執行的最大時間)Python函式
- V$SESSION_LONGOPS超過系統時間SessionGo
- PHP CURL 業務呼叫第三方介面設定超時時間PHP
- Linux時間設定系統時間、硬體時間和時間服務Linux
- 設定mysql 事務鎖超時時間 innodb_lock_wait_timeoutMySqlAI
- 記一次.net core 非同步執行緒設定超時時間非同步執行緒
- 網站訪問狀態和超時時間監控報警設定網站
- 請教cmp實體bean得事務超時時間設定,謝謝Bean
- 2.6.7 設定DDL鎖超時
- linux下的系統時間、硬體時間設定Linux
- 深入理解JDBC的超時設定JDBC
- ExtJS的Ajax提交超時設定JS
- 給 Angular 伺服器端渲染應用設定一個渲染超時時間Angular伺服器
- Oracle CSS的引數設定 心跳時間設定OracleCSS
- Ubuntu 時間不準,怎麼設定NTP時間同步?Ubuntu
- js時間顯示設定JS
- localStorage設定儲存時間
- redis設定過期時間Redis