理解session
JavaEE規範中,session被定義為一個具體的接口,javax.servlet.http.HttpSession,這個接口最終由符合 JavaEE規範的應用服務器來實現,如我們最常用的Tomcat、Weblogic、Websphere等,session通常是存儲在服務器內存中的 (也有其它存儲方式,但這裏只討論這種情況),也就是說session是服務器創建的,而不是瀏覽器創建的。
在服務器上,通過session來區分每一個上網用戶,用戶只要連上服務器,就會立即分配一個Session 給用戶
Session 主要方法:
服務器上通過session給每一個用戶分配一個不會重復的session ID,sessionID 是由服務器統一管理的,人為不能控制。
session.getId(); 長度:32
判斷是否為新的session
public boolean isNew();
Session的屬性設置
設置屬性:public void setAttribute(String name,Object value);
取得屬性:public Object getAttribute(String name)
刪除屬性:public void removeAttribute(String name)
註銷用戶:讓用戶的session失效
如果session失效,則在session所保留的全部操作也會消失
public void invaldate() 是session失效(手工)
如果session長時間不被使用,也會自動失效
得到session的創建時間
public long getCreateTime()
此方法放回long類型,通過new Date()可以取得一個完整時間
取得用戶最後操作的時間:pubic long getLastAccessedTime();
總結
Session將信息保存在服務器上,而cookie保存在客戶端上
Session比Cookie更安全,Session比Cookie更占資源
Session是消耗服務器內存的,所以要合理使用Session,別什麽東西都往Session裏放。
Session是由服務器創建的,跟瀏覽器沒有半毛錢關系,瀏覽器只是拿到一個JSESSIONID。
開發原則:Session 要盡量少用,盡量少向Session中保存信息
Session使用了Cookie的機制,如果Cookie被禁用,則Session也無法使用,因為客戶端的Session ID以Cookie的形式存在,保存在客戶端的內存中,我們可以通過url重寫來保證session的有效性。
重寫URL的方法如下
resp.encodeURL(request.getRequsetURL().toString());
理解session