2014-04-02 14 views
9

Mam zainicjowany cooke jak to w moim JSP,Get wartość cookie w java

String timeStamp = new SimpleDateFormat("dd:MM:yyyy_HH:mm:ss:SSS").format(Calendar.getInstance().getTime()); 
timeStamp = timeStamp + ":" + System.nanoTime(); 
String loc = "/u/poolla/workspace/FirstServlet/WebContent/WEB-INF/"+timeStamp; 
Cookie thecookie = new Cookie("thecookie", loc); 
thecookie.setMaxAge(60*60*24); 
response.addCookie(thecookie); 

Więc wszystkie ciasteczka utworzone będą miały taką samą nazwę, lecz inną wartość dla czasu dostępu inny użytkownik

pytanie 1 - rozwiązany,

w my.java Użyłem

String fpath = request.getParameter("thecookie").toString(); 

dostać loc w my.java p wiek, ale to wyświetliło się null jaki jest mój błąd?

Odpowiedź: Znalazłem here poprawny sposób dostępu do plików cookie

Pytanie 2,

na zakończenie Java Servlet chcę wyłączyć/zabić cookie, który został przekazany na początku Java Servlet i powiedz, czy 5 użytkowników używa równolegle systemu, skąd będę wiedzieć, który plik cookie ma zostać dezaktywowany, dla którego użytkownika w ostatniej części my.java?

na przykład rozważyć

User 1 : cookie name `thecookie` value `AAA` 
User 2 : cookie name `thecookie` value `BBB` 
User 3 : cookie name `thecookie` value `CCC` 
User 4 : cookie name `thecookie` value `DDD` 
User 5 : cookie name `thecookie` value `EEE` 

Teraz, pod koniec my.java serwletu chcę wyłączyć ciasteczka o wartości CCC, który został przydzielony na początku my.java bez zakłócania innych wartości cookies , jak to zrobić?

+0

swoje drugie pytanie nie jest jasne. –

+0

Omówiono w mojej edycji. –

+0

Aplikacja internetowa jest już wielowątkowa. Dlaczego myślisz, że pokaże 10 plików cookie dla dziesięciu użytkowników? –

Odpowiedz

19

Używasz niewłaściwy sposób do odczytywania plików cookie ..

Cookie[] cookies = request.getCookies(); 

if (cookies != null) { 
for (Cookie cookie : cookies) { 
    if (cookie.getName().equals("cookieName")) { 
    //do something 
    //value can be retrieved using #cookie.getValue() 
    } 
    } 
} 

używać. Nie musisz wykrywać ciasteczka dla konkretnego użytkownika, po prostu go dezaktywuj.

+0

Masz na myśli automatycznie identyfikuje, który plik cookie ma zostać dezaktywowany? –

+0

Tak, nie wyświetli 10 plików cookie. Każdy użytkownik będzie miał oddzielne ciasteczko swojego znacznika czasu. –

+0

Nie mogę odczytać specjalnego znaku lub liczb związanych z ciągiem w tej metodzie? jakiekolwiek ograniczenia? – Bhat

3
Cookie[] cookies = request.getCookies(); 
int i = 0; 
for (Cookie cookie : cookies) { 

    Sytem.out.println(cookies[i].getName()); 
    Sytem.out.println(cookies[i].getValue()); 

    i++; 
} 
3

Gotowy do użycia metody rodzajowe:

public static Cookie getCookie(HttpServletRequest request, String name) { 
    Cookie[] cookies = request.getCookies(); 
    if (cookies != null) { 
     for (Cookie cookie : cookies) { 
      if (cookie.getName().equals(name)) { 
       return cookie; 
      } 
     } 
    } 
    return null; 
}