【问题标题】:Getting cookie in servlet在servlet中获取cookie
【发布时间】:2012-06-18 08:08:23
【问题描述】:

我正在尝试使用 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);

我不明白怎么了?

【问题讨论】:

  • 你在哪里调用这个代码?
  • 浏览器是否使用相同的域名、协议和端口(例如example.com:80)访问另一个servlet。

标签: java servlets cookies


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    设置饼干

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

    获取 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();
           }
       }
    

    【讨论】:

    • 只能读字母,不能读字母数字或特殊符号?可能是什么原因?
    • 给cookie添加timelife怎么样?有可能吗?
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      Cookie cookie = new Cookie(name,value);
      response.addCookie(cookie);
      

      【讨论】:

      • 我以这种方式从另一个 servlet 添加 cookie
      • @Anatoly 另一个 servlet 是否在您的同一个域和子域上?
      【解决方案5】:

      According to docs 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) 方法添加的!

      【讨论】:

      • 所以我的意思是我从另一个 servlet 添加了 cookie,而那个 servlet 确实添加了 cookie,但是当我尝试获取 request.getCookie() 时返回 null。
      • 请注意“如果没有发送 cookie,则此方法返回 null。”,如果 getCookies() 返回 null,则在执行 cookies.length 时,给定代码将失败并出现 NullPointerException。
      猜你喜欢
      • 2019-08-23
      • 1970-01-01
      • 2012-07-05
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2011-05-01
      • 2014-05-13
      相关资源
      最近更新 更多