Получение файла 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);