TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #401 4.49K
📌 Какие методы для работы с cookies предусмотрены в сервлетах ?

💬 Спросят с вероятностью 6%

Предоставлены методы для работы с ними, которые включают их создание, добавление в ответ, получение и управление свойствами cookies. Основные классы и методы, используемые для работы с cookies, это Cookie, HttpServletRequest и HttpServletResponse.

Создание и добавление

В ответ используется класс Cookie и методы HttpServletResponse.
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/setCookie")
public class SetCookieServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Создание cookie
Cookie cookie = new Cookie("username", "JohnDoe");
cookie.setMaxAge(60 * 60); // Установка времени жизни в секундах (1 час)

// Добавление cookie в ответ
response.addCookie(cookie);

response.getWriter().println("Cookie set successfully");
}
}


Получение и чтение cookies

Из запроса используется метод getCookies класса HttpServletRequest.
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/getCookie")
public class GetCookieServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Получение всех cookies из запроса
Cookie[] cookies = request.getCookies();

if (cookies != null) {
for (Cookie cookie : cookies) {
if ("username".equals(cookie.getName())) {
String username = cookie.getValue();
response.getWriter().println("Hello, " + username);
}
}
} else {
response.getWriter().println("No cookies found");
}
}
}


Основные методы

➕ Конструктор

    Cookie(String name, String value)


➕ Получение и установка имени и значения cookie

    String getName()
String getValue()
void setValue(String newValue)


➕ Управление временем жизни cookie

    int getMaxAge()
void setMaxAge(int expiry) // Установка времени жизни в секундах

Важные моменты

1️⃣ Безопасность:

➕ Используйте флаг Secure для передачи cookies только по HTTPS.

➕ Используйте флаг HttpOnly для предотвращения доступа к cookies через JavaScript.

2️⃣ Путь и домен:

➕ Убедитесь, что указываете правильный домен и путь для cookies, чтобы они были доступны только нужным частям вашего приложения.

3️⃣ Время жизни:

➕ Устанавливайте время жизни cookies в зависимости от их назначения. Сессионные cookies (без заданного времени жизни) будут удалены после закрытия браузера, а постоянные cookies сохранятся до указанного времени.

Для работы с cookies в сервлетах используются методы классов Cookie, HttpServletRequest и HttpServletResponse. Можете создавать, читать, изменять и удалять cookies, управляя их свойствами, такими как имя, значение, время жизни, домен, путь и флаги безопасности. Правильное использование cookies помогает сохранять состояние сеансов и управлять данными пользователя между запросами.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
  • 👍 4
  • 🤔 2
  • ❤ 1
More from @easy_java_ru
  1. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  2. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  3. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  4. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  5. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  6. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →