1. 程式人生 > >理解session

理解session

接口 bic sse setattr url重寫 保存 區分 vax 關系

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