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

Servlet 中 Cookie 完整操作指南:建立、屬性設定、中文編碼、多 Cookie 管理與 Header 替代寫法

     編輯:Java 綜合教學

Cookie 機制三步驟

  1. 伺服器建立 Cookie 並加入響應。
  2. 瀏覽器本地儲存 (文字檔)。
  3. 後續請求自動攜帶 Cookie 回伺服器。

核心 API (javax.servlet.http.Cookie)

方法說明
setDomain(String)設定適用域名 (如 .example.com)
getDomain()取得域名
setMaxAge(int)設定存活秒數;-1=會話級,0=刪除
getMaxAge()取得存活秒數
getName()取得 Cookie 名稱 (不可變)
setValue(String)設定值
getValue()取得值
setPath(String)設定路徑 (預設當前目錄)
getPath()取得路徑
setSecure(boolean)僅 HTTPS 傳輸
setComment(String)用途說明 (瀏覽器可見)
getComment()取得說明

標準寫法範例

Cookie cookie = new Cookie("RMKEY", useResVo.getRmkey());
cookie.setMaxAge(3600);           // 1 小時
cookie.setDomain(".why.com");     // 共享給子域名
cookie.setPath("/");              // 全站有效
response.addCookie(cookie);

多 Cookie 處理

多次 new Cookie(...) 並 response.addCookie(),瀏覽器仍只會在同一域名下維護一個文字檔,內含多組鍵值對。

替代寫法:直接操作 Header (不推薦常規使用)

response.addHeader("Set-Cookie",
    cookieName + "=" + cookieValue +
    ";Path=/;Domain=" + domain +
    ";Max-Age=" + maxAge +
    ";HttpOnly");

優點:可精確控制 HttpOnly、SameSite 等標準屬性 (Servlet 3.1+ Cookie 類已支援 setHttpOnly()、setAttribute("SameSite", "Strict"))。

中文值處理

// 寫入
Cookie c = new Cookie("name", URLEncoder.encode("中文值", "UTF-8"));
// 讀取
String val = URLDecoder.decode(cookie.getValue(), "UTF-8");

最佳實踐

  • 敏感資訊勿存 Cookie,改用 Session/Token。
  • 設定 HttpOnly=true 防 XSS 竊取。
  • HTTPS 環境強制 Secure=true。
  • 設定合理 Max-Age,避免永久 Cookie。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved