15

我正在尝试使用 servlet 获取 cookie

Cookie[] cookie = request.getCookies();

cookie总是null

所以我从另一个 servlet 设置它们,它们出现在浏览器首选项中。

Cookie cookie = new Cookie("color", "cyan");
cookie.setMaxAge(24*60*60);
cookie.setPath("/");
response.addCookie(cookie);

我不明白怎么了?

4

5 回答 5

16

根据文档 getCookies()返回一个数组,其中包含客户端随此请求发送的所有 Cookie 对象。如果没有发送 cookie,则此方法返回 null。

您是否正确添加了 cookie?如果是,您应该能够遍历返回的 cookie 列表

Cookie[] cookies = request.getCookies();

for (int i = 0; i < cookies.length; i++) {
  String name = cookies[i].getName();
  String value = cookies[i].getValue();
}

如果不...

Cookie 是addCookie(Cookie)通过响应对象中的方法添加的!

于 2012-06-15T09:10:50.783 回答
14

设置饼干

  Cookie cookie = new Cookie("cookiename", "cookievalue");
  response.addCookie(cookie);

获取饼干

  Cookie[] cookies = request.getCookies();
  if(cookies != null) {
      for (int i = 0; i < cookies.length; i++) {
          cookie=cookies[i]
          String cookieName = cookie.getName();
          String cookieValue = cookie.getValue();
       }
   }
于 2015-05-21T10:30:37.307 回答
2

你确定客户端支持cookies吗?因为如果将其配置为不接受 cookie,您将永远无法在以下请求中取回它们...

于 2014-04-04T13:20:24.157 回答
0

我遇到了同样的问题,发现我的原因是我使用的是 Eclipse 内置的浏览器。这不接受cookies。当我从 chrome 访问相同的 JSP 时,它起作用了。也许你正在做和我一样的事情?

也可能是您使用的浏览器或您的互联网设置被设置为拒绝 cookie。希望这可以帮助您或遇到相同问题的任何其他访问者。

于 2018-03-06T16:15:31.580 回答
-2

首先,你应该创建一个cookie,然后添加到响应

Cookie cookie = new Cookie(name,value);
response.addCookie(cookie);
于 2012-06-15T09:21:39.807 回答