大廠面試題丨面試有關(guān)session的問(wèn)題怎么回答呢?!
金三銀四面試黃金周期,相信很多小伙伴兒都參加大大小小不少面試?yán)?!今天大連九哥給大家剖析一下有關(guān)session的面試題。
首先session是我們?cè)趯W(xué)習(xí)javaweb時(shí)很重要的一個(gè)技能點(diǎn),在面試的時(shí)候經(jīng)常被面試官問(wèn)到,常見(jiàn)問(wèn)題如下:
1、session和Cookie的區(qū)別是什么?
2、session的生命周期是怎樣的?
3、session的性能瓶頸?
4、session的工作原理?
……

今天大連九哥就來(lái)和大家來(lái)剖析一下session的工作原理。
特別說(shuō)明一下,現(xiàn)在說(shuō)的session是基于Cookie的session,如果客戶端禁用Cookie的話,session的實(shí)現(xiàn)則不同,這個(gè)稍后進(jìn)行解析。
第一:當(dāng)客戶端瀏覽器窗口發(fā)出請(qǐng)求后,該瀏覽器的Cookie就會(huì)被傳入服務(wù)器;
第二:服務(wù)器讀取Cookie中的sessionid,這時(shí)就存在讀到和讀不到兩種情況
第三:如果讀不到,則由容器創(chuàng)建一個(gè)session,然后把這個(gè)session的sessionid用Cookie寫入客戶端
第四:下次再進(jìn)行網(wǎng)絡(luò)請(qǐng)求時(shí),這個(gè)sessionid也同樣會(huì)被傳入服務(wù)器
第五:服務(wù)器讀取到sessionid后,就到容器中查找到了該sessionid所對(duì)應(yīng)的session
綜上所述,容器是根據(jù)sessionid來(lái)區(qū)分你的請(qǐng)求到底該使用哪個(gè)seesion的。

剛剛提到,如果客戶端禁用了Cookie,就不能使用Cookie在客戶端瀏覽器和服務(wù)器間進(jìn)行sessionid的傳輸了,那么該如何處理呢?這就需要對(duì)url進(jìn)行重寫了。
url重寫其實(shí)就是把sessionid拼接在url的后面,通過(guò)url在客戶端和服務(wù)器之間傳輸這個(gè)sessionid,只要客戶端讀取到了客戶端傳遞過(guò)來(lái)的sessionid了,就可以查找到對(duì)應(yīng)的session了。
url重寫使用response.encodeRedirectURL("頁(yè)面")。

接下來(lái)大連九哥來(lái)給大家來(lái)分析一下session和Cookie的區(qū)別:
1、Cookie是存于客戶端的,相對(duì)而言不夠安全,而session是在服務(wù)器器上,相對(duì)比較安全;
2、Cookie只能存于字符串,而session可以存儲(chǔ)對(duì)象;
3、兩者的默認(rèn)有效時(shí)間也不同,seesion的默認(rèn)有效時(shí)間為30分鐘,瀏覽器關(guān)閉,session也就失效。
而Cookie的有效期如果設(shè)置為0,則將Cookie刪除,設(shè)置為負(fù)數(shù)的話,存于瀏覽器緩存里,瀏覽器關(guān)閉也就失效,設(shè)置為正數(shù)的話,單位為秒,設(shè)置多少就在多少秒內(nèi)有效。

關(guān)注千鋒教育,一起學(xué)Java、一起成長(zhǎng)!