Gymterview
junior

Какие методы для работы с cookies предусмотрены в сервлетах

Servlet API предоставляет класс javax.servlet.http.Cookie для работы с cookies. Чтение и запись cookies выполняется через разные объекты — запрос и ответ соответственно.

Основные операции

Пример
// Чтение cookies из запроса
Cookie[] cookies = request.getCookies(); // может вернуть null
if (cookies != null) {
    for (Cookie cookie : cookies) {
        if ("username".equals(cookie.getName())) {
            String value = cookie.getValue();
        }
    }
}

// Создание и отправка cookie в ответе
Cookie cookie = new Cookie("username", "john");
cookie.setMaxAge(3600);      // время жизни в секундах
cookie.setHttpOnly(true);     // недоступен из JS
cookie.setSecure(true);       // только по HTTPS
response.addCookie(cookie);

// Удаление cookie (установка maxAge = 0)
Cookie cookie = new Cookie("username", "");
cookie.setMaxAge(0);
response.addCookie(cookie);

Важная особенность API: HttpServletRequest предоставляет только getCookies() (чтение), HttpServletResponse — только addCookie() (запись). Методов для удаления cookie нет — для удаления нужно отправить cookie с тем же именем и maxAge = 0.

На собеседовании: упомяните, что getCookies() может вернуть null (не пустой массив), и что удаление cookie — это отправка cookie с maxAge = 0. Это частые ловушки.