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

JSP/Servlet Cookie 處理完整指南:從建立到進階屬性設定

     編輯:關於JSP

9.1 Cookie 概述

Cookie 是伺服器傳送給瀏覽器的小型純文字資訊。使用者後續造訪同一 Web 伺服器時,瀏覽器會原樣回傳這些 Cookie。透過讀取先前儲存在客戶端的資訊,網站能提供多種便利:線上交易中的用戶身分識別、低安全性場合免重複輸入帳密、入口網站首頁客製化、精準廣告投放等。

Cookie 旨在為用戶帶來便利、為網站創造增值。儘管流傳許多誤解,事實上 Cookie 不會造成嚴重安全威脅:它永遠不會被執行,故不會攜帶病毒或攻擊系統。瀏覽器通常限制總計 300 個 Cookie、單一站點最多 20 個、單一 Cookie 上限 4 KB,因此不會塞滿硬碟,也無法作為「阻斷服務」攻擊手段。

9.2 Servlet Cookie API 核心操作

發送 Cookie 至客戶端

  1. 呼叫 new Cookie(name, value) 建立 Cookie(§9.2.1)
  2. 透過 cookie.setXXX 設定屬性(§9.2.2)
  3. 以 response.addCookie(cookie) 加入回應標頭(§9.2.3)

從客戶端讀取 Cookie

呼叫 request.getCookies() 取得 Cookie 物件陣列。通常以迴圈遍歷尋找指定名稱的 Cookie,再呼叫 getValue() 取得對應值(§9.2.4)。

9.2.1 建立 Cookie

建構子接受兩個字串參數(名稱、值),兩者皆不得包含空白字元及 [ ] ( ) = , " / ? @ : ; 等特殊字元。

9.2.2 讀取與設定 Cookie 屬性

方法功能說明
getComment/setComment取得/設定 Cookie 註解
getDomain/setDomain取得/設定適用域名。預設僅回傳給發送伺服器;可指定同域下其他伺服器(需以點開頭,如 .sitename.com;非國家級域需含兩點,國家級需三點)
getMaxAge/setMaxAge取得/設定過期秒數。未設定則僅當前會話有效(關閉瀏覽器即失效),不寫入磁碟
getName/setName取得/設定 Cookie 名稱。名稱與值是核心關注點;getCookies() 回傳陣列故需迴圈尋找特定名稱
getPath/setPath取得/設定適用路徑。未指定則回傳給目前目錄及子目錄;setPath("/") 可讓全站頁面接收
getSecure/setSecure取得/設定 boolean,指定是否僅透過加密連線(SSL)傳送
getValue/setValue取得/設定 Cookie 值。名稱亦可作邏輯標記(存在即為 true)
getVersion/setVersion取得/設定協定版本。預設版本 0(Netscape 規範);版本 1 遵循 RFC 2109 但支援度有限

9.2.3 在回應標頭中設定 Cookie

Cookie userCookie = new Cookie("user", "uid1234");
response.addCookie(userCookie);

9.2.4 讀取客戶端 Cookie

呼叫 HttpServletRequest.getCookies() 取得對應 HTTP 請求標頭的 Cookie 陣列,迴圈遍歷並以 getName() 比對,找到目標後呼叫 getValue() 取值。為簡化常用操作,文中提供 getCookieValue 工具方法:傳入 Cookie 陣列、名稱、預設值,回傳匹配值或預設值。

9.3 實用 Cookie 工具函數

文末提供數個簡單但實用的工具函數,協助開發者高效處理 Cookie 相關邏輯。

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