web-dev-qa-db-fra.com

Obtenez la valeur du cookie dans java

J'ai initialisé Cooke comme ça dans mon JSP,

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);

Ainsi, tous les cookies créés auront le même nom, mais une valeur différente pour un temps d'accès utilisateur différent.

À la fin de Java servlet, je veux désactiver/tuer le cookie qui a été passé au début de Java servlet et dire s'ils sont 5 utilisateurs utilisant le système en parallèle comment saurai-je quel cookie désactiver pour quel utilisateur dans le dernier de my.java?

par exemple, considérez

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`

Maintenant, à la fin de la servlet my.Java, je veux désactiver le cookie avec la valeur CCC qui a été attribuée au début de my.Java sans déranger les autres valeurs de cookie, comment faire?

12
user1733583

Vous utilisez la mauvaise méthode pour lire les cookies.

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()
    }
  }
}

utilisez ceci. Pas besoin de détecter le cookie pour un utilisateur particulier, il suffit de le désactiver.

27
Deepak Tiwari

Méthode générique prête à l'emploi:

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;
}
5
Pavel Vlasov
Cookie[] cookies = request.getCookies();
int i = 0;
for (Cookie cookie : cookies ) {

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

  i++;
}
4
shrikant