java如何设置cookie
设置Cookie的基本方法
在Java中,可以通过javax.servlet.http.Cookie类来创建和设置Cookie。以下是基本步骤:
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
// 创建Cookie对象
Cookie cookie = new Cookie("cookieName", "cookieValue");
// 设置Cookie有效期(秒为单位),例如1小时
cookie.setMaxAge(60 * 60);
// 设置Cookie路径,默认为当前路径
cookie.setPath("/");
// 可选:设置域名限制
// cookie.setDomain("example.com");
// 将Cookie添加到响应中
response.addCookie(cookie);
设置多个Cookie
可以多次调用response.addCookie()来设置多个Cookie:

Cookie userCookie = new Cookie("username", "john_doe");
userCookie.setMaxAge(3600);
Cookie langCookie = new Cookie("language", "en");
langCookie.setMaxAge(86400); // 24小时
response.addCookie(userCookie);
response.addCookie(langCookie);
设置HttpOnly和Secure标志
为了增强安全性,可以设置HttpOnly和Secure标志:

Cookie secureCookie = new Cookie("secureToken", "abc123");
secureCookie.setHttpOnly(true); // 防止XSS攻击
secureCookie.setSecure(true); // 仅通过HTTPS传输
secureCookie.setMaxAge(3600);
response.addCookie(secureCookie);
在Spring框架中设置Cookie
使用Spring MVC时,可以通过ResponseEntity或直接操作HttpServletResponse:
import org.springframework.http.ResponseCookie;
// Spring 5+ 的方式
ResponseCookie springCookie = ResponseCookie.from("auth", "token123")
.httpOnly(true)
.secure(true)
.path("/")
.maxAge(Duration.ofHours(1))
.build();
return ResponseEntity.ok()
.header(HttpHeaders.SET_COOKIE, springCookie.toString())
.body("Cookie set");
删除Cookie
要删除Cookie,可以设置一个同名Cookie并将有效期设为0:
Cookie deleteCookie = new Cookie("cookieName", "");
deleteCookie.setMaxAge(0);
deleteCookie.setPath("/");
response.addCookie(deleteCookie);
注意事项
- 确保在添加Cookie之前没有向客户端发送任何内容,否则可能无法设置Cookie
- Cookie值不应包含敏感信息,考虑使用加密或Session替代
- 现代浏览器通常限制每个域名下的Cookie数量(约50个)和大小(约4KB)






