Session
有效範圍當前會話,從瀏覽器打開到瀏覽器關閉這個過程。
HttpSession和Cookie的區別
a)HttpSession數據存在服務器,Cookie數據存在瀏覽器上
b)Cookie存放數據是有大小限制的,HttpSession沒有
cookie得大小是最大4k,Cookie的個數每個瀏覽器不同
c)Cookie不安全,HttpSession安全
HttpSession何時創建和銷燬?作用範圍:
創建:服務器端第一次調用getSession()創建HttpSession.
銷燬:三種情況銷燬session:
1.session過期. 默認過期時間爲30分鐘.
2.非正常關閉服務器.如果正常關閉session序列化到硬盤.
正常關閉服務器的話,session會被序列化到本地,在項目目錄下會生成一個SESSIONS.ser文件,下次再打開服務器後,該文件會被反序列化.
3.手動調用session.invalidate();
作用範圍:瀏覽器沒有被徹底關閉之前的請求
服務器端一旦爲瀏覽器創建session後,,瀏覽器端訪問該頁面時會攜帶一個cookie信息(請求頭)
Cookie JSESSIONID=967DD636E09AF2E1D727A4FEAD6629E8
HttpSession創建的注意事項
a)IE8文件選項裏的新建會話的方式去打開新的窗口訪問頁面,服務器則會爲新的瀏覽器窗口重新創建一個新的session
b)瀏覽器中的隱私瀏覽去打開新的窗口訪問頁面,服務器則會爲新的瀏覽器窗口重新創建一個新的session
c)正常情況下,開啓瀏覽器後只要不是徹底關閉瀏覽器的話,訪問頁面則會公用同一個session
d)注意:服務器正常關閉,再啓動,Session對象會進行鈍化和活化操作。同時如果服務器鈍化的時間在session 默認銷燬時間之內,則活化後session還是存在的。否則Session不存在。如果JavaBean 數據在session鈍化時,沒有實現Serializable 則當Session活化時,會消失。
【HttpSession的問題】
訪問Servlet會不會創建Session : 不會
訪問JSP會不會創建Session :會.
訪問html會不會創建Session :不會
作爲域對象進行存取數據
a) 保存屬性
void setAttribute(String name,Object value);
b) 取出屬性
Obejct getAttribute(String name);
c) 移除屬性
void removeAttribute(String name);
設置session過期時間
a)在web.xml配置seesion-config標籤
銷燬session的話需要在web.xml文件中配置
<session-config>
<!-- session在1分鐘之後就被銷燬 -->
<session-timeout>1</session-timeout>
</session-config>
b)代碼設置
HttpSession session = request.getSession(true);
session.setMaxInactiveInterval(900);
c)tomcat默認過期時間是30分鐘
d)手動銷燬seesion
HttpSession session = request.getSession(true);
session.invalidate();
更多免費技術資料可關注:annalin1203