session和cookie兩種方法存儲區別基本都很清楚了。
但是面試中問到客戶端是怎麼知道打開瀏覽器的時候是如何知道去取服務端那個session的?
session的內容是存在服務端的。客服端怎麼知道是取那個的呢?
看下session存儲的執行過程:
當用戶請求servlet,servlet會首先查看客戶端cookie中是否有sessionID,如果有則證明是舊的會話,
那麼就通過cookie將sessionID發送到服務器,服務器就會根據sessionID到服務器的內存中查找
session對象(因爲每個session都會有一個sessionID來標識session對象),找到之後然後使用。
如果cookie中沒有sessionID這證明是一個新的會話。服務器就會創建一個新的Session對象,
然後將SessionID存放早cookie中,通過cookie把sessionID發送到客戶端。客戶端下一次訪問的時候,
就會將SessionID發送到服務器以便再次找到這個session對象,完成會話跟蹤所以如果用戶將cookie關閉
session也將會失效。session是依賴與cookie的。
與cookie的區別與聯繫:cookie在客戶端保存用戶的信息,而session在服務器上保存客戶的信息
session依賴於cookie。如果用戶關閉cookie,則session失效,
原因是sessionID無法從客戶端傳遞到服務端,也不能從服務端傳遞到客戶端.
這下就瞭然了。