Sobes.tech
Junior

Jakie metody są przewidziane do obsługi plików cookie w serwletach?

sobes.tech AI

Odpowiedź od AI

W serwletach używane są metody obiektów HttpServletRequest (do pobierania cookie) i HttpServletResponse (do wysyłania cookie).

Pobieranie cookie z żądania:

  • Cookie[] getCookies(): Zwraca tablicę obiektów Cookie otrzymanych w żądaniu. Jeśli nie ma cookie, zwraca null.

Wysyłanie cookie w odpowiedzi:

  • void addCookie(Cookie cookie): Dodaje wskazany obiekt Cookie do odpowiedzi.

Klasa Cookie zawiera następujące główne metody:

  • String getName(): Zwraca nazwę cookie.
  • String getValue(): Zwraca wartość cookie.
  • void setValue(String newValue): Ustawia nową wartość cookie.
  • String getPath(): Zwraca ścieżkę, na której cookie jest dostępne.
  • void setPath(String uri): Ustawia ścieżkę dla cookie.
  • String getDomain(): Zwraca domenę, dla której cookie jest ważne.
  • void setDomain(String pattern): Ustawia domenę dla cookie.
  • int getMaxAge(): Zwraca maksymalny czas życia (w sekundach) cookie. Wartość ujemna oznacza, że cookie istnieje do zamknięcia przeglądarki. 0 oznacza usunięcie cookie.
  • void setMaxAge(int expiry): Ustawia maksymalny czas życia cookie.
  • boolean getSecure(): Zwraca true, jeśli cookie ma być wysyłane tylko przez bezpieczne (HTTPS) połączenie.
  • void setSecure(boolean flag): Ustawia flagę bezpiecznego połączenia dla cookie.
  • int getVersion(): Zwraca wersję protokołu cookie.
  • void setVersion(int v): Ustawia wersję protokołu cookie.
  • boolean isHttpOnly(): Zwraca true, jeśli cookie jest dostępne tylko przez żądania HTTP (nie przez JavaScript).
  • void setHttpOnly(boolean isHttpOnly): Ustawia flagę HttpOnly dla cookie.

Przykład pobierania i ustawiania cookie:

// Pobieranie cookie z żądania
Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        if ("userName".equals(cookie.getName())) {
            String userName = cookie.getValue();
            // Użyj wartości cookie
            break;
        }
    }
}

// Ustawianie nowego cookie w odpowiedzi
Cookie newCookie = new Cookie("language", "en");
newCookie.setMaxAge(60 * 60 * 24 * 30); // Czas trwania 30 dni
response.addCookie(newCookie);