首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Cookie 技術深度實戰:從基礎到權限控制與效能測試

     編輯:Java 相關知識

Java Web Cookie 完整實戰指南

Cookie 是 HTTP 無狀態特性下實現會話追蹤、個人化體驗與權限控制的核心機制。本文透過六個完整實戰案例,系統講解 Cookie 的建立、讀取、權限隔離、刪除策略、實際業務場景應用(登入記錄、瀏覽歷史)與瀏覽器限制測試。

核心 API 快速回顧

  • new Cookie(name, value):建立 Cookie,值需 URL 編碼支援中文
  • setMaxAge(seconds):設定存活秒數,負數=會話級,0=刪除,正數=持久化
  • setPath(path):權限控制關鍵,僅同路徑或子路徑的 Servlet 可存取
  • response.addCookie(cookie):寫入回應標頭
  • request.getCookies():讀取請求標頭中的所有 Cookie

案例一:基礎寫入與讀取(含中文支援)

關鍵點:中文值必須經 URLEncoder.encode(value, "UTF-8") 編碼寫入,讀取時用 URLDecoder.decode(value, "UTF-8") 解碼。設定 setPath("/") 讓全專案可存取。

案例二:路徑權限隔離機制

Cookie 的 path 屬性決定可見範圍:

  • Cookie A:path="/project/CookieDemo" → 僅 /CookieDemo 及其子路徑可見
  • Cookie B:path="/project/servlet/CookieDemo2" → 僅 /servlet/CookieDemo2 及其子路徑可見

驗證結果:父路徑 Servlet 可讀取子路徑 Cookie,反之不可。同名不同路徑視為不同 Cookie,互不覆蓋。

案例三:標準刪除流程

刪除必須精確匹配原建立時的 name、path、domain 三要素,並設定 setMaxAge(0)。常見錯誤:路徑不一致導致刪除失敗,實際上是建立了新的即期 Cookie。

案例四:記錄使用者上次登入時間

邏輯:讀取 loginTime Cookie → 解析時間戳 → 格式化顯示 → 更新為當前時間並延長有效期(如 1 年)。首次訪問顯示「首次拜訪」。

案例五:記錄最近瀏覽圖片(最多 3 張,去重+LRU)

單一 Cookie 值以逗號分隔儲存檔名(如 img3.jpg,img1.jpg,img2.jpg)。核心邏輯:

  1. 讀取現有列表
  2. 若點擊圖片已存在,移至最前(LRU)
  3. 若不存在,加入最前
  4. 超過 3 個截斷最後一個
  5. 更新 Cookie 值

JSP 端透過 request.getCookies() 解析並渲染縮圖。

案例六:Firefox Cookie 限制實測

  • 單域名數量上限: 約 110 個(Firefox 47 測試)
  • 單個 Cookie 大小上限: 4092 位元組(含 name、value、屬性)
  • 超出限制會導致寫入失敗或舊 Cookie 被驅逐

最佳實踐總結

場景建議設定
會話追蹤setMaxAge(-1), path="/"
記住登入setMaxAge(30天), path="/", HttpOnly=true, Secure=true
敏感權限隔離精確 path 限制存取範圍
中文內容URLEncoder/Decoder UTF-8 編解碼
大量資料改用 Session/資料庫,Cookie 僅存 ID

透過本文六大實戰案例,你已掌握 Cookie 從基礎操作到進階權限控制、業務建模與效能邊界測試的完整知識體系,可直接應用於實際 Java Web 專案開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved