更新時間:2021-07-22 來源:黑馬程序員 瀏覽量:
當我們去醫院就診時,醫院都會給就診病人發放就醫卡,卡上只有卡號,而沒有其它信息。但病人每次去該醫院就診時,只要出示就醫卡,醫務人員便可根據卡號查詢到病人的就診信息。Session技術就好比醫院發放給病人的就醫卡和醫院為每個病人保留病例檔案的過程。當瀏覽器訪問Web服務器時,Servlet容器就會創建一個Session對象和ID屬性,其中,Session對象就相當于病歷檔案,ID就相當于就醫卡號。當客戶端后續訪問服務器時,只要將標識號傳遞給服務器,服務器就能判斷出該請求是哪個客戶端發送的,從而選擇與之對應的Session對象為其服務。
需要注意的是,由于客戶端需要接收、記錄和回送Session對象的ID,因此,通常情況下,Session是借助Cookie技術來傳遞ID屬性的。
為了大家更好的理解Session,接下來,以網站購物為例,通過一張圖來描述Session保存用戶信息的原理,具體如圖1所示。
圖1 Session保存用戶信息的過程
在圖1中,用戶甲和乙都調用buyServlet將商品添加到購物車,調用payServlet進行商品結算。由于甲和乙購買商品的過程類似,在此,以用戶甲為例進行詳細說明。當用戶甲訪問購物網站時,服務器為甲創建了一個Session對象(相當于購物車)。當甲將Nokia手機添加到購物車時,Nokia手機的信息便存放到了Session對象中。同時,服務器將Session對象的ID屬性以Cookie (Set-Cookie: JsessionID=111)的形式返回給甲的瀏覽器。當甲完成購物進行結賬時,需要向服務器發送結賬請求,這時,瀏覽器自動在請求消息頭中將Cookie (Cookie: JsessionID=111)信息回送給服務器,服務器根據ID屬性找到為用戶甲所創建的Session對象,并將Session對象中所存放的Nokia手機信息取出進行結算。
Cookie、sessionStorage、localStorage的區別
cookie和session的區別和用法【Java面試題解析】
黑馬程序員Java高級軟件工程師培訓