1. 程式人生 > 程式設計 >Serlvet之cookie和session學習

Serlvet之cookie和session學習

HTTP 協議

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

雞和鴨.png

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

通訊.png

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

魚的記憶.png

會話

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

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

cookis簡介

cookie是小段的文字資訊(微型redis資料庫),大小為4kb左右,放在瀏覽器的記憶體或者磁碟中,可以設定存活時間,瀏覽器關閉就消失了。除非儲存在磁碟。

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 >>