2012-06-15 21 views
10

Próbuję uzyskać plik cookie w serwletu przy użyciuPierwsze cookies w serwletu

Cookie[] cookie = request.getCookies(); 

ale cookie jest zawsze null.

Tak więc ustawiam je z innego serwletu i pojawiają się w preferencjach przeglądarki.

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

Nie rozumiem, co jest nie tak?

+0

Gdzie wywołujesz ten kod? – adarshr

+0

Czy przeglądarka uzyskuje dostęp do tego innego apletu przy użyciu tej samej nazwy domeny, protokołu i portu (np. Https://example.com:80). –

Odpowiedz

11

According to docsgetCookies() Powoduje zwrócenie tablicy zawierającej wszystkie obiekty Cookie wysłane przez klienta z tym żądaniem. Ta metoda zwraca wartość null, jeśli żadne pliki cookie nie zostały wysłane.

Czy poprawnie dodałeś plik cookie? Jeśli tak, to powinieneś być w stanie wykonać iterację listy ciasteczek wrócił z

Cookie[] cookies = request.getCookies(); 

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

jeśli nie ...

Cookies są dodawane za pomocą metody w obiekcie odpowiedzi addCookie(Cookie)!

+0

Mam na myśli to, że dodaję plik cookie z innego serwletu i ten serwlet naprawdę dodaje ciasteczko, ale kiedy próbuję uzyskać request.getCookie() zwraca null – Anatoly

+7

Zwróć uwagę na "Ta metoda zwraca wartość null, jeśli żadne ciasteczka nie zostały wysłane.", Podany kod zakończy się niepowodzeniem z NullPointerException podczas wykonywania plików cookie.length, jeśli getCookies() zwróci wartość null – hectorg87

-2

po pierwsze, należy utworzyć plik cookie, a następnie dodać do odpowiedzi

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

Dodaję ciasteczko w ten sposób z innego serwletu – Anatoly

+2

@Anatoly Czy inny serwlet w tej samej domenie i poddomenie? – gcochard

1

Czy jesteś pewien, że klient obsługuje ciasteczka? bo jeśli to skonfigurować, aby nie akceptuje ciasteczek, nigdy nie dostanie ich z powrotem na poniższym życzenie ...

9

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

jest w stanie odczytać tylko alfabet, nie czytając alfanumerycznych lub specjalnych symboli? Co może być przyczyną? – Bhat

0

I Miałem ten sam problem i odkryłem, że w moim przypadku było to, że korzystałem z przeglądarki wbudowanej w Eclipse. To nie akceptuje plików cookie. Kiedy uzyskałem dostęp do tej samej strony JSP z chrome, zadziałało. Być może robisz to samo co ja?

Możliwe, że przeglądarka, której używasz, lub ustawienia internetowe są ustawione tak, aby odrzucać pliki cookie. Mamy nadzieję, że to pomoże Tobie lub każdemu innemu odwiedzającemu doświadczać tego samego problemu.

Powiązane problemy