在Java Web開發中,Session爲咱們提供了不少方便,Session是由瀏覽器和服務器之間維護的。Session超時理解爲:瀏覽器和服務器之間建立了一個Session,因爲客戶端長時間(休眠時間)沒有與服務器交互,服務器將此Session銷燬,客戶端再一次與服務器交互時以前的Session就不存在了。java
設置Session超時時間方式:web
方式一:在web.xml中設置session-config以下-針對單個應用而言:瀏覽器
<session-config> <session-timeout>2</session-timeout> </session-config>
即客戶端連續兩次與服務器交互間隔時間最長爲2分鐘,2分鐘後session.getAttribute()獲取的值爲空服務器
API信息:session
session.getCreationTime() 獲取session的建立時間 session.getLastAccessedTime() 獲取上次與服務器交互時間 session.getMaxInactiveInterval() 獲取session最大的不活動的間隔時間,以秒爲單位120秒。
方式二: 在Tomcat的/conf/web.xml中session-config,默認值爲:30分鐘,針對整個容器而言code
<session-config> <session-timeout>30</session-timeout> </session-config>
方式三: 在Servlet中設置xml
HttpSession session = request.getSession(); session.setMaxInactiveInterval(60);//單位爲秒
說明:開發
1.優先級:Servlet中API設置 > 程序/web.xml設置 > Tomcat/conf/web.xml設置get
2.若訪問服務器session超時(本次訪問與上次訪問時間間隔大於session最大的不活動的間隔時間)了,即上次會話結束,但服務器與客戶端會產生一個新的會話,以前的session裏的屬性值所有丟失,產生新的sesssionIdio
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值代替),用於會話管理。