i have written the next code:
public void delete(MyType instance) {
List<MyType> myList = this.getAll();
Cookie[] cookies = request.getCookies();
List<Cookie> cookieList = new ArrayList<Cookie>();
cookieList = Arrays.asList(cookies);
for(Cookie cookie:cookieList) {
if(Long.valueOf(cookie.getValue()) == instance.getId()) {
cookieList.remove(cookie);
}
}
myList.remove(instance);
cookies = (Cookie[]) cookieList.toArray();
}
the issue is next: when i delete the cookie from the cookielist, how i can put the updated cookielist (without deleted cookie) back to the client? request or response don’t have any *.setCookies(); methods.
or cookies will update automatically?
best regards.
You need to set the very same cookie with a
nullvalue and a max age of0(and the same path, if you have set a custom one) back on the response byHttpServletResponse#addCookie().Unrelated to the concrete problem, you do not need massage the array to a list and back at all. The enhanced for loop works on arrays as good. Also, using
==to compareLongvalues would only work for values between -128 and 127. You needequals()instead. So all in all, the method could look like this:By the way, it’s scary to see
requestandresponsebeing instance variables of some class. Are you sure that the particular class is threadsafe? To understand servlets and threadsafety, you may find this answer helpful: How do servlets work? Instantiation, sessions, shared variables and multithreading.