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;