I have a cookie, myCookie
, that contains a hash value. This cookie is set to expire in one year and has a path of '/'. I need to update this cookie with a new hash value. When my JSP script is loaded I retrieve the cookie like so:
Cookie[] cookies = request.getCookies();
Cookie myCookie = null;
for (int i = 0; i < cookies.length; i += 1) {
if (cookies[i].getName().equals("myCookie")) {
myCookie = cookies[i];
break;
}
}
After determining that the value of the cookie needs to be updated, I do the following to update it:
myCookie.setValue("my new value");
response.addCookie(myCookie);
Examining the results, I now have two instances of myCookie
: the original version with the correct expiration date and path, and the old, invalid, value; and a new cookie named "myCookie" that expires at the end of the session, with the correct value, and a path of the JSP document.
If I do:
myCookie.setValue("my new value");
myCookie.setPath(myCookie.getPath());
myCookie.setMaxAge(myCookie.getMaxAge());
response.addCookies(myCookie);
The same thing happens. I get two cookies with the same name and different properties.
Does a Cookie object not retain the properties from when it was retrieved? How can I update this cookie?
Note: I do not want to modify the path or the expiration date. I only want to update the value of the already set cookie.