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

Java Servlet Cookie 完整操作指南:創建、設置、讀取、刪除與中文編碼

     編輯:關於C++

Cookie 基礎與 HTTP 頭格式

Cookie 通常通過 HTTP 響應頭 Set-Cookie 設置,格式如下:

HTTP/1.1 200 OK
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=w3cschool.cc

關鍵屬性:

  • name=value:鍵值對,會被 URL 編碼
  • expires:過期時間(GMT 格式),過期後瀏覽器自動刪除
  • path:生效路徑,默認為當前目錄
  • domain:生效域名

Servlet Cookie API 核心方法

方法說明
setDomain(String) / getDomain()設置/獲取適用域名
setMaxAge(int) / getMaxAge()設置/獲取最大生存時間(秒),-1 表示會話級,0 表示刪除
getName()獲取 Cookie 名稱(創建後不可變)
setValue(String) / getValue()設置/獲取 Cookie 值
setPath(String) / getPath()設置/獲取生效路徑(需以 / 結尾)
setSecure(boolean)是否僅在 HTTPS 下傳輸
setComment(String) / getComment()設置/獲取用途說明

常用操作代碼示例

1. 創建並添加 Cookie

Cookie cookie = new Cookie("key", "value");
cookie.setMaxAge(60 * 60 * 24);  // 1 天(秒)
response.addCookie(cookie);

2. 刪除 Cookie

cookie.setMaxAge(0);  // 設置為 0 即刪除
response.addCookie(cookie);

3. 設置路徑與域名

cookie.setPath("/sessionWeb/");      // 僅該路徑及子路徑可訪問
cookie.setDomain(".google.com");     // 所有 .google.com 子域可訪問

4. 中文編碼處理(關鍵!)

Cookie 不支持 Unicode 直接存儲,必須進行 URL 編碼:

// 寫入時編碼
Cookie cookie = new Cookie(
    URLEncoder.encode("姓名", "UTF-8"),
    URLEncoder.encode("張三", "UTF-8")
);
response.addCookie(cookie);

// 讀取時解碼
Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie c : cookies) {
        String name = URLDecoder.decode(c.getName(), "UTF-8");
        String value = URLDecoder.decode(c.getValue(), "UTF-8");
        // 處理 name/value
    }
}

注意事項總結

  • Cookie 名稱/值不能包含:[ ] ( ) = , " / ? @ : ; 及空格
  • 單個 Cookie 最大 4KB,每域名限制約 20-50 個
  • setMaxAge 不調用默認為會話級(瀏覽器關閉失效)
  • 跨子域共享需設置 setDomain(".parent.com")
  • 安全敏感信息務必設置 setSecure(true) 配合 HTTPS
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved