Получение файла cookie в сервлете

Я пытаюсь получить cookie в сервлет, используя

Cookie[] cookie = request.getCookies();

но cookie всегда null.

Поэтому я устанавливаю их из другого сервлета, и они отображаются в настройках браузера.

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

Я не понимаю, что случилось?

Ответ 1

Согласно документам getCookies() Возвращает массив, содержащий все объекты Cookie, отправленные клиентом с этим запросом. Этот метод возвращает null, если cookie не отправлен.

Правильно ли вы добавили файл cookie? Если да, вы должны иметь возможность перебирать список файлов cookie, возвращенных с помощью

Cookie[] cookies = request.getCookies();

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

Если нет...

Куки файлы добавляются с помощью метода addCookie(Cookie) в объекте ответа!

Ответ 2

SET COOKIE

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

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

Ответ 3

Вы уверены, что клиент поддерживает файлы cookie? потому что, если он настроен НЕ принимать файлы cookie, вы никогда не получите их обратно по следующему запросу...

Ответ 4

У меня была такая же проблема, и я обнаружил, что в моем случае причина заключалась в том, что я использовал браузер, встроенный в Eclipse. Это не принимает файлы cookie. Когда я обратился к тому же JSP с хром, он работал. Возможно, вы делаете то же самое, что и я?

Также может быть, что браузер, который вы используете, или ваши настройки в Интернете настроены на отклонение файлов cookie. Надеюсь, это поможет вам или любому другому посетителю, испытывающему ту же проблему.

Ответ 5

во-первых, вы должны создать файл cookie, а затем добавить в ответ

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