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