內建物件--Session物件:
阿新 • • 發佈:2019-01-08
每個使用者分別對應不同的`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。為什麼上一次需要???不明白