1. 程式人生 > >內建物件--Session物件:

內建物件--Session物件:

 

每個使用者分別對應不同的`session,都儲存在伺服器。

(在不同頁面切換,伺服器知道是同一人,是session;在一家公司的幾個網站裡切換,只登陸一次,其他的也可以進去,比如登入淘寶就可以進天貓,用的是CAS單點登入。不知道這兩個原理上有什麼類似)

 

 

<% 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
      Date d = new Date(session.getCreationTime());
      session.setAttribute(
"username", "admin"); session.setAttribute("password", "123456"); session.setAttribute("age", 20); //設定當前session最大生成期限單位是秒 //session.setMaxInactiveInterval(10);//10秒鐘 //session.invalidate();//銷燬當前會話。 %> Session建立時間:<%=sdf.format(d)%><br> Session的ID編號:
<%=session.getId()%><BR> 從Session中獲取使用者名稱:<%=session.getAttribute("username") %><br> <% //session.invalidate();//銷燬當前會話 %> <a href="session_page2.jsp" target="_blank">跳轉到Session_page2.jsp</a>//跳轉也是同一個會話。

生命週期

 

 

 

修改後啟動專案:

開啟tomcat後臺(換個頁面,這個page1的頁面不要關閉)。進入管理員(要先設定管理員的賬戶、密碼):

專案有一個會話,點選這個  1   可以檢視會話:

關閉再開啟,是一次新的會話,進入管理頁面,可以看到,原來的會話還在(在等待超時):

 

設定超時時間:

這個web.xml是專案的,不是tomcat的:

去檢視:

等了一分鐘,頁面的值並沒有變,不知道為什麼。在myeclipse裡把程式停止再啟動,再試試

等一分鐘後,值就變了,說明一分鐘後的會話消失了。

為什麼要重啟一個伺服器才行?如果不重啟,修改程式碼後只儲存,難道就沒有變嗎?應該是修改jsp的程式碼才會離開有效,其他的程式碼需要重啟專案才行

 

原來的過期時間設定是1分鐘,修改為兩分鐘,只儲存,重新整理頁面,不重啟tomcat,試試:

過去一分鐘,沒有變:

兩分鐘後,會話變了:

說明設定是有效的,並不需要重啟tomcat。為什麼上一次需要???不明白