session:會話瀏覽器
a。瀏覽網站:開始-關閉cookie
a。瀏覽、付款、退出session
c。電子郵件:瀏覽、寫郵件、退出jsp
開始-結束網站
session機制:指針
第一次 對象
客戶端第一次請求服務端時,(jsessionid和session匹配失敗)服務端會產生一個session()對象blog
(該session對象能夠用於保存該客戶的信息)而且每一個session對象都會有一個惟一的sessionID(用於區分) 字符串
服務端又會產生一個cookie,而且該cookie的key和value已肯定,爲name=JSESSIONID,value=服務端sessionID的值,而後服務端會在響應客戶端的同時將該cookie發送給客戶端,至此客戶端 就有了一個cookie(該裏面有一個JSSENSIONID)。所以客戶端的cookie就能夠和服務端的session一一對應(JSSENSIONID-sessionID)get
第n次
客戶端第二/n次請求服務端時:服務端會先用客戶端cookie中的JSESSIONID去服務端的session中匹配sessionid,若是匹配成功(cookie jsessionid和session sessionid),說明此用戶不是第一 次訪問。
sessionID是session對象的惟一標記,在服務端中
JSESSIONID存儲在cookie中,在客戶端中,由服務端給客戶端
例子:
服務端: 顧客(客戶端)
服務端:存包處 商場(服務端)
顧客第一次存包 :商場判斷此人是否以前已經存過包(經過你手裏是否有鑰匙)
若是是新顧客(沒鑰匙),分配一個鑰匙給該顧客,鑰匙會和櫃子一一對應。
第二次/n次寸存包,商場判斷此人以前是已經存過包的(經過你手裏是否有鑰匙)
若是是老顧客(有鑰匙),則不須要分配,該顧客手裏的鑰匙會和櫃子一一對應
session小結:
a. session 對象存儲在服務端
b.session是在同一個用戶請求時共享
c. 實現機制:第一次客戶請求時產生一個sessionid並複製給cookie的jsessionid而後發給客戶端,最終經過sessionID與JSESSIONID匹配
session 方法
String getId() 獲取sessionId (字符串)
boolean isNew() 判斷是不是新用戶(第一次訪問)
void invalidate() 使session失效(退出登陸,失效,至關於收回鑰匙或者鑰匙做廢)
session裏面能夠放東西
void setAttribute()
object getAttribute()
void setMaxInactiveInterval(秒):設置最大有效非活動時間。在這麼長的時間內沒有操做,則再次使用還需登陸驗證,若是在這麼長時 間內操做,則上次登陸有效
int getMaxInactiveInterval()獲取最大有效非活動時間
session實例
在瀏覽器內從login.jsp按照zs/abc登陸入welcome.jsp頁面後,即便在session有效期內從URL欄直接輸入welcome.jsp會致使空指針錯誤,由於request內數據只在一次內有效,從地址欄回車至關於發送第二次請求。可是,若是登陸入welcome.jsp後在頁面按F5刷新,則還會出現以前的內容,由於以下,瀏覽器會重複以前的動做。
session內的屬性是同一次會話共享,只要還沒結束,就一直能獲取裏面的內容。可是更換瀏覽器則不行。