java 如何获取cookies
获取 Cookies 的方法
在 Java 中,可以通过 HttpServletRequest 对象获取 HTTP 请求中的 Cookies。以下是具体实现方式:
1. 使用 HttpServletRequest 获取 Cookies
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Cookie;
public void getCookies(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
System.out.println("Cookie Name: " + name + ", Value: " + value);
}
}
}
2. 获取特定 Cookie
如果需要获取特定的 Cookie,可以通过遍历 Cookies 数组并匹配名称来实现:
public Cookie getCookieByName(HttpServletRequest request, String cookieName) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals(cookieName)) {
return cookie;
}
}
}
return null;
}
3. 使用 HttpServletResponse 添加 Cookie
如果需要添加 Cookie,可以通过 HttpServletResponse 对象:
import javax.servlet.http.HttpServletResponse;
public void addCookie(HttpServletResponse response, String name, String value) {
Cookie cookie = new Cookie(name, value);
cookie.setMaxAge(60 * 60 * 24); // 设置 Cookie 过期时间为 1 天
response.addCookie(cookie);
}
4. 设置 Cookie 属性
可以设置 Cookie 的其他属性,如路径、域名、是否仅限 HTTPS 等:
public void setCookieAttributes(HttpServletResponse response, String name, String value) {
Cookie cookie = new Cookie(name, value);
cookie.setPath("/"); // 设置 Cookie 路径
cookie.setDomain("example.com"); // 设置 Cookie 域名
cookie.setSecure(true); // 仅通过 HTTPS 传输
cookie.setHttpOnly(true); // 防止 JavaScript 访问
response.addCookie(cookie);
}
5. 删除 Cookie
删除 Cookie 的方法是设置其过期时间为 0:

public void deleteCookie(HttpServletResponse response, String name) {
Cookie cookie = new Cookie(name, "");
cookie.setMaxAge(0); // 立即过期
response.addCookie(cookie);
}
注意事项
- 如果请求中没有 Cookies,
request.getCookies()会返回null,需要做空值检查。 - Cookie 的名称和值都是字符串,不能包含特殊字符(如空格、分号等)。
- 在设置 Cookie 时,可以通过
setMaxAge()控制其生命周期(单位为秒)。






