Serlvet之cookie和session學習

HTTP 協議

Web通訊須要一種語言,就像中國人講中文,歐美說英文,Web使用的HTTP協議,也叫超文本協議。java

雞和鴨.png

使用HTTP協議的人分爲兩類:客戶端和服務端。請求資源的角色是客戶端,提供資源的是服務端。redis

通訊.png

HTTP協議是一個很神奇的東西,他只負責說話,至於說了什麼他也不知道。因此HTTP是無狀態的協議。數據庫

魚的記憶.png

會話

HTTP是沒有狀態,可是人們是有記憶的,人們想讓HTTP記住某些東西,而後就提出幾種解決方案:編程

  1. 隱藏域表單
  2. 重寫url
  3. cookie
  4. session

cookis簡介

cookie是小段的文本信息(微型redis數據庫),大小爲4kb左右,放在瀏覽器的內存或者磁盤中,能夠設置存活時間,瀏覽器關閉就消失了。除非保存在磁盤。api

cookies使用場景

  1. 記住用戶名和密碼
  2. 購物車
  3. 定向廣告

發送cookies

  1. 建立cookies
  2. 設置最大時效
  3. 將Cookie放入到HTTP響應報頭
Cookie c = new Cookie("userID", "a1234");
c.setMaxAge(60*60*24*7);
response.addCookie(c)

讀取Cookie

String cookieName = "userID";
Cookie[] cookies = request.getCookies();
if(cookies != null){
    for(Cookie cookie : cookies){
        if(cookieName.equals(cookie.getName())){
            doSomethingWith(cookie.getValue());
        }
    }
}

session

存在服務器內存的文本信息(微型redis數據庫)瀏覽器

建立session

HttpSession session = request.getSession;

HttpSession的API

pubic Object getAttribute(String name); //根據name 獲取屬性的值

public void setAttriute(String name, Object value); //設置一個名稱和對應的值

public void logout() //將會話從客戶端註銷

session使用場景

  1. 購物車
  2. 驗證碼

cookie與session區別

cookie session
存在瀏覽器 存在服務端
安全係數低 較安全

參考:

<< servlet與jsp核心編程 >>安全

<< servlet和jsp學習指南 >>服務器

<< 圖解HTTP >>cookie

相關文章
相關標籤/搜索