2012-01-18 3 views
4

Ce mon code pour la mise nouveau cookiecomment supprimer les cookies dans jsp/java

Cookie citizen = new Cookie("citizen",email); 
citizen.setMaxAge(3600); 
response.addCookie(citizen); 

maintenant je suis en utilisant ce code pour détruire le cookie

Cookie[] cookies = request.getCookies(); 

     for(int i = 0; i < cookies.length; i++) { 
      if (cookies[i].getName().equals("citizen")) { 
      cookies[i].setMaxAge(0); 
      response.addCookie(cookies[i]); 
} 
} 

Mais, je suis toujours obtenir la valeur de cookie. L'aide sera appréciée !!

+1

Voulez-vous dire que, dans la prochaine requête du client envoie encore le cookie? –

+0

non, je viens de trouver le code ci-dessus et l'ai utilisé. Mais ça ne fonctionne pas. –

+0

Comment ça "ne marche pas"? Voulez-vous dire que dans la prochaine demande, le client envoie toujours le cookie? Sinon, que se passe-t-il et que prévoyez-vous? –

Répondre

0

Essayez d'ajouter cette ligne:

cookies[i].setMaxAge(0); 
//add this line 
cookies[i].setPath("/"); 
response.addCookie(cookies[i]); 
+0

désolé !! ça ne marche pas :( –

+0

désolé bout de ce – dan

0

L'option correcte sera

Cookie cookie = new Cookie("citizen", "citizen"); 
cookie.setMaxAge(0); 
cookie.setValue(""); 
response.addCookie(cookie); 

si vous essayez d'obtenir le cookie de demande d'ajouter ensuite à une réponse avec setMaxAge (0), vous pouvez voir que le cookie n'a pas été retiré.

1

J'avais un problème similaire à ceci, où le cookie a conservé la valeur même après avoir réglé l'âge maximum à 0 et la valeur à "". J'ai utilisé firefox pour regarder les attributs des cookies pour aider au débogage. Lors de la connexion, le servlet a appelé ma classe cookie pour définir le cookie, et le chemin du cookie était "/ javawork /". Lors de la déconnexion, la page JSP appelait la même classe de cookies pour "supprimer" le cookie en mettant l'âge maximum à 0. Mais la page JSP se trouvait dans un sous-dossier de l'application web, donc quand j'ai créé un cookie nom avec l'âge maximum de 0, il a créé un nouveau cookie avec le chemin "/ javawork/test_login /".

Alors que "nouveau" cookie a expiré immédiatement, mais l'original a toujours existé. Dans ma fonction cookie de suppression, je devais définir le chemin du "nouveau" cookie comme étant "/ javawork /", et quand j'ai mis l'âge maximum à 0 et l'ai ajouté, il a mis à jour le cookie original et m'a laissé déconnecter correctement.

J'espère que cela aide.

0

Cela fonctionne pour moi -

Cookie UIDCookie = new Cookie(COOKIE_KEY, ""); 
UIDCookie.setMaxAge(0); 
UIDCookie.setPath("/"); 
response.addCookie(qptUIDCookie); 
+0

Je pense que vous voulez dire UIDCookie au lieu de qptUIDCookie)) – Akvel

Questions connexes