cookie的簡單理解

cookie產生

  的\http協議是無狀態,無連接的。無狀態的就是指的,一個的接口無論你請求多少次,效果都是一樣的。不會因爲你請求次數多,而改變什麼。無連接的理解就是,當你請求接口時候,只有服務器接受客戶端發送信息的瞬間,客戶端會和服務端有連接,之後二者就沒有了什麼關係。
  但會出現一個問題,當你訪問接口的時候,可能你每次都要傳遞一個固定的參數。這時候的你再去獲取這個參數可能會很麻煩,這時候cookie就產生了。

cookie介紹

上面說到了cookie的產生。接着,我們進一步理解cookie。

cookie是一種瀏覽器的技術。cookie信息會存儲到瀏覽器上。當你使用瀏覽器發送請求的時候,都會攜帶cookie的值。cookie的值以鍵值對形式來存儲的。

cookie的創建

1.創建cookie,併發送給瀏覽器

  我們首先通過服務器獲取 HttpServletResponse 對象(這裏獲取的對象是response),然後的創建cookie對象,通過respnse發送給瀏覽器。

		//創建一個cookie對象
        Cookie cookie=new Cookie("CookieName","CookieValue");
        //將創建的cookie發送給瀏覽器
        response.addCookie(cookie);

運行完畢後,打開瀏覽器的調試模式 ,查看到下面會有一句
Set-Cookie: CookieName=CookieValue
這就表示創建了這個cookie。如下圖:
在這裏插入圖片描述

2.介紹一下關於cookie的三個方法

1. setPath()
該方法可以指定攜帶cookie的目錄

//創建一個cookie對象
        Cookie cookie=new Cookie("CookieName","CookieValue");
        //使用setPath()方法
        cookie.setPath("/haveCookie");
        //將創建的cookie發送給瀏覽器
        response.addCookie(cookie);

運行的方法後,我們發現只有當我們的訪問目錄在’/haveCookie '下纔會有cookie值。
2. setDomain()
該方法可以設置一些跨域的共享cookie。但是實現這種效果僅限於同主域名的情況下。

  		//創建一個cookie對象
        Cookie cookie=new Cookie("CookieName","CookieValue");
        //使用setPath()方法
        cookie.setPath("/");
        //使用setDomain()方法
        cookie.setDomain("one.ssodemo.com");
        //將創建的cookie發送給瀏覽器
        response.addCookie(cookie);

這裏我爲了更好觀察cookie,我設置了 ‘cookie.setPath("/");’,我使用’ssodemo.com’域名來使用這個方法。會發現cookie添加到了 ‘one.ssodemo.com’ 下。
3. setMaxAge()
該方法可以設置cookie的有效期。當cookie沒有設置有效期的時候,是存儲到的內存中的。當設置了有效期,無論多短,都是保存到本地的

   //創建一個cookie對象
        Cookie cookie=new Cookie("CookieName","CookieValue");
        //使用setPath()方法
        cookie.setPath("/");
        //使用setDomain()方法
        cookie.setDomain("one.ssodemo.com");
        //設置cookie的有效期(30分鐘)
        cookie.setMaxAge(30*60);
        //將創建的cookie發送給瀏覽器
        response.addCookie(cookie);

效果就不演示了。

cookie的獲取

cookie是通過’HttpServletRequest’對象的獲取的。

//獲取所有的cookie
        Cookie select=null;
        Cookie[] cookies=request.getCookies();
        //遍歷所有的cookie
        for(Cookie cookie:cookies){
            //通過判key值來確定cookie
            if("CookieName".equals(cookie.getValue())){
                select=cookie;
            }
        }
        return select;
發佈了55 篇原創文章 · 獲贊 12 · 訪問量 2124
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章