jsp内置对象--session
session(服務端)
session:會話
1. 瀏覽網站:開始->關閉
2. 購物:瀏覽,結算,付款,退出
3. 電子郵件: 瀏覽,寫郵件,退出
以上都是session的例子,一次開始到結束被稱作session
session機制:
客戶端第一次請求服務端時,(JSESSIONID與sessioID開始匹配,不成功)服務端會產生一個session對象(用于保存該客戶的信息)
并且產生session的同時為每個session產生一個唯一的sessionID(用于區分其他session)
服務端又會產生一個cookie,并且該cookie的name=JSESSIONID,value=服務端sessionID的值
如何服務端會在響應客戶端的同時,將該cookie發送給客戶端,至此,客戶端就有了一個cookie(JSESSIONID)
因此,客戶端的cookie就可以和服務端的session一一對應(JSESSION-sessionID)
所以,cookie保存在客戶端,session保存在服務端
舉例:現在要訪問京東
點擊登錄成功的瞬間產生session
第一次訪問,開始登錄,JSESSIONID與sessioID開始匹配,這不會成功。之后服務端產生一個session,將名字,密碼等個人信息放入session,產生一個sessionID,將sessionID復制一份,命名為JSESSIONID,發給客戶端
第二次訪問,sessionID與JSESSIONID匹配成功,說明此用戶不是第一次訪問,不需要登錄
例子:
客戶端:? ? ? ? ? ? ? ? 顧客?
服務端:存包處? -? 商城(服務端)
顧客第一次存包:商城判斷此人之前是否存過包(通過判斷手里是否有鑰匙)
如果是新顧客(沒鑰匙),分配一個鑰匙給顧客,鑰匙與柜子的鎖一一對應
之后再次存包:商城判斷這個人存過包(因為手里有鑰匙),該顧客手中的鑰匙與某一個柜子的鎖對應)
鑰匙相當于JSESSIONID,存放他的口袋相當于cookie
柜子的鎖相當于sessionID,柜子相當于session
總結:
1. session存儲在服務端
2. session是在同一個用戶(客戶端)請求時共享
3.實現機制:第一次客戶請求時,產生一個sessionID并復制給cookie的JSESSIONID然后發給客戶端。最終,通過session的sessionID和cookie的JSESSIONID實現一一對應
session方法:
String getId():獲取sessionId
boolean isNew():是否是第一次訪問
void invalida():使session失效(退出登錄,注銷)
setAttribute()
getAttribute()
void setNaxInactiveInterval(秒):設置最大有效 非活動時間
eg:多少時間內沒進行操作就銷毀session
int? getNaxInactiveInterval(秒):獲取最大有效 非活動時間
eg:瀏覽一個網站,一直在劃動著看,就一直有效,出去兩個小時再回來一般就要重新登錄了
?
?
request在一次請求中有效,如圖
?
session:同一次會話共享
客戶端發出請求,服務端任何一個頁面都可以拿到請求的數據
例如:在火狐瀏覽器登錄京東頁面,不管打開多少個京東的頁面,登錄信息一直在
但換成ie瀏覽器,就沒得了
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的jsp内置对象--session的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Maven项目无法加载jdbc.prop
- 下一篇: Leetcode--174. 地下城游戏