保存session id的幾種方式:web
Session Cookie:瀏覽器
session用過SessionID來區分不一樣的用戶,session是以cookie或URL重寫爲基礎的,默認使用cookie來實現,系統會創造一個名爲JSESSIONID的輸出cookie,這稱之爲session cookie,以區別pesistent cookies(cookie),session cookie是存儲於瀏覽器內存中的,並非寫到硬盤上。服務器
1.何時建立HttpSession對象cookie
①是否瀏覽器訪問服務端的任何一個JSP,服務器都會當即建立一個HttpSession對象呢?不必定。session
1.對於JSP:spa
1)若當前的JSP是客戶端訪問的當前WEB應用的第一個資源,且JSP的page指定的session屬性值爲false,則服務器就不會爲JSP建立一個HttpSession對象。xml
2)若當前JSP不是客戶端訪問的當前WEB應用的第一個資源,且其餘頁面已經建立一個HttpSession對象,而不會建立一個新的HttpSession對象對象
2.對於Servlet:若Servlet是客戶端訪問的第一個WEB應用的資源,則只調用了request.getSession()或request.getSession(true)纔會建立HttpSession對象
生命週期
②page指令的session="false" 究竟是什麼意思?內存
> 當前JSP頁面禁用session隱含變量,但可使用其餘的顯式的HttpSession對象
(3)在sevlet中如何獲取HttpSession對象?
> request.getSession(boolean create):
create爲false,若沒有和當前JSP頁面關聯的HttpSession對象,則返回null;如有,則返回true
create爲true,必定返回一個HttpSession對象。若沒有和當前JSP頁面關聯的HttpSession對象,則服務器建立一個新的HttpSession對象返回,如有,直接返回關聯的。
request.getSession()等同於request.getSession(true)
2.何時銷燬HttpSession對象
(1).直接調用HttpSession的invalidate()方法:該方法使HttpSession失效
(2).服務器卸載了當前WEB應用。
(3).超過HttpSession的過時時間
session.getMaxInactiveInterval();獲取過時時間默認1800s
》設置HttpSession的過時時間:session.setMaxInactiveInerval(5);單位爲秒
》在web.xml文件中設置HttpSession的過時時間:單位爲分鐘
<session-config>
<session-timeout>30</session-timeout>
</session-config>
(4).並非關閉瀏覽器就銷燬了session對象