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?
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.
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;
}
Cookie[] cookies = request.getCookies();
int i = 0;
for (Cookie cookie : cookies ) {
Sytem.out.println(cookies[i].getName());
Sytem.out.println(cookies[i].getValue());
i++;
}