Session入門學(xué)習(xí)

Session學(xué)習(xí)

一.什么是session?

????當(dāng)訪問(wèn)服務(wù)器否個(gè)網(wǎng)頁(yè)的時(shí)候,會(huì)在服務(wù)器端的內(nèi)存里開(kāi)辟一塊內(nèi)存,這塊內(nèi)存就叫做session,而這個(gè)內(nèi)存是跟瀏覽器關(guān)聯(lián)在一起的。在計(jì)算機(jī)中,尤其是在網(wǎng)絡(luò)應(yīng)用中,Session稱為“會(huì)話控制”。

二.Session的作用? ??

? ? 在Session出現(xiàn)之前,為了解決多次多次Http請(qǐng)求的關(guān)聯(lián),如登錄一個(gè)界面,在發(fā)生跳轉(zhuǎn)時(shí)候,下一個(gè)界面也保持登錄狀態(tài),采用了Cookie,但Cookie保持在本地,不夠安全,且大小有限,因此,Session應(yīng)運(yùn)而生。

? ? 在Session不同于Cookie,它保存在了服務(wù)器內(nèi)存中。因?yàn)镠TTP是無(wú)關(guān)聯(lián)的,可能在同一時(shí)間有許多人同時(shí)訪問(wèn)同一個(gè)頁(yè)面,因此需要一個(gè)session_id來(lái)綁定一個(gè)用戶。當(dāng)一個(gè)用戶在同一個(gè)網(wǎng)頁(yè)中進(jìn)行操作的時(shí)候,它根據(jù)傳過(guò)來(lái)的信息生成session_id,并將其發(fā)送給客戶端,這里默認(rèn)瀏覽器支持使用cookie,客戶端將session_id保存在cookie中,并在下次訪問(wèn)的時(shí)候帶上session_id,這樣就可以在跳轉(zhuǎn)一個(gè)頁(yè)面的時(shí)候,了解上個(gè)界面的數(shù)據(jù),如上面所說(shuō)的登錄操作。

三.Session的應(yīng)用

? ? (注:本文具體描述在Java的web后端開(kāi)發(fā)的應(yīng)用)

? ? Session的創(chuàng)建流程

? ? ????1.首先在程序?yàn)槟硞€(gè)客戶端創(chuàng)建session時(shí)候,服務(wù)器首先檢測(cè)是否該請(qǐng)求里包含sessionid。

? ????? 2.若存在sessionId,表示已經(jīng)創(chuàng)建過(guò)session,那么通過(guò)id去檢索,但是因?yàn)閟ession會(huì)在一段時(shí)間未被訪問(wèn)時(shí)被刪除,有時(shí)候,會(huì)存在找不到session的情況,那么,在創(chuàng)建一個(gè)session。若請(qǐng)求中不包含sessionId,則創(chuàng)建一個(gè)與Session關(guān)聯(lián)的Sessionid,并傳給前端。

? ????? 3.前端將該session保存起來(lái),在下一次訪問(wèn)的時(shí)候,帶上上一步創(chuàng)建的sessionId(若該id未失效)則能夠訪問(wèn)與該id有關(guān)的session。

? ? Session在java中的使用

? ? ????1.session調(diào)用的常見(jiàn)函數(shù)

? ??????????isNew():是否是新的Session,一般在第一次訪問(wèn)的時(shí)候出現(xiàn)

????????????getid():拿到session,獲取ID

????????????getCreationTime():當(dāng)前session創(chuàng)建的時(shí)間

????????????getLastAccessedTime():最近的一次訪問(wèn)這個(gè)session的時(shí)間。

????????????getRrquestedSessionid: 跟隨上個(gè)網(wǎng)頁(yè)cookies或者URL傳過(guò)來(lái)的session

????????????isRequestedSessionIdFromCookie():是否通過(guò)Cookies傳過(guò)來(lái)的

????????????isRequestedSessionIdFromURL():是否通過(guò)重寫URL傳過(guò)來(lái)的

????????????isRequestedSessionIdValid():是不是有效的sessionID

? ? ????2.如何從session中取值

? ? ? ? ? ? session使用key-map形式來(lái)保存數(shù)據(jù)因此,采用session.setAttribute("token",token)來(lái)保存數(shù)據(jù),session.getAttribute("key")來(lái)獲取session中保存的數(shù)據(jù)。


? ??


? ??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容