1). httpsession:在伺服器端保持http狀態的方案。和其對應的是cookie
2). 產生httpsession物件的過程:當程式需要為某個客戶端的請求建立乙個session時,伺服器首先檢查這個客戶端的請求是否包含乙個session標識(即sessionid),如果已經包含乙個sessionid則說明已經建立了乙個session,伺服器就按照sessionid把這個session檢索出來使用,如果檢索不到,可能會新建乙個,這種情況可能出現再伺服器端已經刪除了該使用者對應的session物件,但使用者人為地在請求的url後面附加上乙個jession的引數)。如果客戶端請求不包含sessionid,則為此客戶建立乙個session並且生成乙個與此session相關聯的sessionid,這個sessionid將在本次響應中返回給客戶端儲存。
3)使用cookie來跟蹤session:session通過sessionid是以cookie或url重寫為基礎的,預設使用cookie來實現,系統會建立乙個名為jessionid的輸出cookie,這稱之為session cookie,session cookie是儲存於瀏覽器記憶體中的,並不是寫到硬碟上,
2.httpsession的生命週期:
1).什麼時候建立:
1.是否瀏覽器訪問服務端的任何乙個jsp或servlet,伺服器都會建立乙個session物件呢
答:不一定,
a、若當前的jsp是客戶端訪問的當前web應用的第乙個資源,且jsp的page指定的session屬性值為false,
則伺服器不會建立session物件
b、若當前的jsp不是客戶端訪問的當前web應用的第乙個資源,且其他頁面已經建立了httpsession物件,則當前頁面返回
乙個httpsession物件,而不會建立乙個新的httpsession物件
c、對於servlet:若servlet是客戶端訪問的第乙個web應用的資源,則只有呼叫了request。getsession()或request.getsession(true)
2).session="false" 表示:當前jsp頁面禁用session隱含變數,但是可以自己顯式定義httpsession物件
3).什麼時候銷毀:
a.直接呼叫httpsession的invalidate()方法
b.伺服器解除安裝了當前web應用
c.超出httpsession的過期時間,session的最大存活時間(預設是30分鐘,1800秒),可以自己設定
區域性: session.setmaxinactiveinterval(30);//設定session的最大存活時間
全域性:tomcat伺服器中的 web.xml,單位:分鐘
304).並不是關瀏覽器就銷毀了session
3.session api
1).cookie中設定session 引數
//建立乙個cookie
cookie cookie=new cookie("jessionid",session.getid());
//設定cookie的最大時間
cookie.setmaxage(20);
//新增cookie
response.addcookie(cookie);
2)
//獲取sessionid
session.getid();
//判斷session是否是新建立的
session.isnew()
//獲取session的最大存活時間
session.getmaxinactiveinterval()
//獲取session建立時間
session.getcreationtime()
//獲取上次訪問該session的時間
session.getlastaccessedtime()
//session新增引數
session.setattribute("username", request.getparameter("username"));
//獲取session中引數
session.getattribute("username")
//session失效
session.invalidate();
深入理解HTTP Session
session在web開發中是乙個非常重要的概念,這個概念很抽象,很難定義,也是最讓人迷惑的乙個名詞,也是最多被濫用的名字之一,在不同的場合,session一次的含義也很不相同。這裡只 http session。為了說明問題,這裡基於j a servlet理解session的概念與原理,這裡所說se...
HttpSession 資料同步
1 第一種方式,把物件的屬性定義為immutable,synchronized同步更新 public class highscore public playerscore gethighscore public void updatehighscore playerscore newscore or...
HttpSession簡單介紹
void setattribute string name,object value 設定session object getattribute string name 獲取session某個屬性值 void removeattribute string name 刪除session中某個屬性值 s...