Servlet與JSP進階五:瀏覽器Cookie

小枯林發表於2021-01-05

本篇部落格的主要內容是:

        ● 為什麼要有Cookie;

        ● Cookie本地存放地址;

        ● 如何在程式中設定(新增)Cookie;

        ● 如何在瀏覽器中檢視Cookie資訊;

        ● 如何在程式中獲取Cookie資訊;

        ● 如何設定Cookie時效;

Cookie(小甜餅~~~)

一個小例子:例如平常登入一個網易郵箱時,如果選擇“十天內免登入”,登入後,關閉瀏覽器;重新開啟瀏覽器,會發現網易郵箱的登入狀態並沒有消失。

其底層的實現原理是,網易郵箱網利用了Cookie技術,存放了使用者的登入資訊;瀏覽器二次訪問網易郵箱首頁時,瀏覽器會把Cookie中存放的使用者登入資訊提取出來,並通知伺服器說之前這個使用者已經登入過了,並不需要重新登入;

“十天內免登入”:這個Cookie只能儲存十天,十天以後,將會被瀏覽器自動清除;


Cookie放在哪兒了?


設定Cookie示例:

下面,設定了Cookie,並將Cookie資訊隨著response(響應)發回到瀏覽器端;瀏覽器將這個Cookie資訊儲存到本地的檔案中;之後每一次請求,request(請求物件)都會包含這個Cookie資訊,一併傳送到對應的地址上。

Cookie要匯入這個包: 

效果:


對於上面的過程中,Cookie是否生效嘞?在瀏覽器中檢視Cookie。


 獲取Cookie

效果:


 

上面稍微改造下:

效果:


Cookie的時效性怎麼弄?:Cookie的預設時效

當Cookie沒有設定有效期時,Cookie的有效期就是當前的瀏覽器視窗:

在上面的例子中,我們先訪問了ImoocLoginServlet這個Servlet,我們是在這個Servlet中設定的Cookie,然後在沒有關閉瀏覽器的情況下,又訪問了ImoocIndexServlet這個Servlet,在這個Servlet中我們訪問了Cookie;

因為沒有關閉瀏覽器,所以ImoocLoginServlet設定的Cookie資訊會有效,ImoocIndexServlet能正常訪問到Cookie資訊;

但一旦,我們關閉了瀏覽器,重新開啟瀏覽器,直接訪問ImoocIndexServlet時:報錯了,Cookie失效了

其實,上面報了空指標異常,其實cs這個陣列是空的(因為所有的Cookie資訊都失效了),會引發空指標異常了;

所以上面的程式可以改一下,增強健壯性:

上面程式處理了可能出現的錯誤情況,此時再訪問時:


怎麼設定Cookie時效:

 

此時先訪問ImoocLoginServlet,先讓瀏覽器將Cookie資訊儲存;

關閉瀏覽器:然後重啟,訪問ImoocIndexServlet:結果,發現Cookie並沒有因為關閉了瀏覽器而失效,因為我們把其時效性設定成了7天;


cookie是保證使用者會話的基礎;

 

 

 

 

 

 

 

 

 

 

相關文章