2013-12-14 3 views
0
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
PrintWriter out = response.getWriter(); 
response.setContentType("text/html"); 

Cookie[] cookies = request.getCookies(); 
if(null != cookies) { 
    for(Cookie cookie : cookies) { 
     out.println(cookie); 
     out.println("<br>"); 
    } 
} else { 
//Set the Cookie in response, so that you can retrieve this in subsequent requests 
    Cookie PegaRULES = new Cookie("PegaRULES", "This is PegaRULES Cookie"); 
    response.addCookie(PegaRULES); 
} 

}Почему меняется hashcode файла cookie, когда теперь добавляется новый файл cookie в последующих ответах?

Привет всем,

Я выше кода, в идеале он должен сделать следующее

для 1-го запроса, так как не было бы PegaRULES печенье, он должен добавить один в ответ

из второго запроса на подопечных, так же печенье должно быть напечатано в браузере (я имею в виду ИмяКласса @ хэш печенья, как Cookie @ Ac35c)

Мои наблюдения

Для первого запроса, пустой страницы (как и ожидалось), а также в ответ на печенье присутствует

для второго запроса, Cookie @ af33d (скажем)

для всех последующих запросов, его не должны меняться (т.е. тот же Cookie @ af33d должен быть напечатан в браузере) Но я вижу, что значение изменилось при каждом последующем запросе (каждый раз обновляю браузер, чтобы запускать последующие запросы)

FYI, я использую Fiddler для отслеживания запросы и ответы

и я не вижу никакого файла cookie в последующих ответах от второго запроса в палатах (и это как ожидается). Меня больше беспокоит значение, напечатанное в браузере, которое меняется каждый раз, когда я обновить браузер (т. е. запустить новый запрос)

PS: То же самое происходит с IE и Google Chrome

ответ

0

Согласно documentation класс javax.servlet.http.Cookie не переопределяет Object#hashCode, поэтому хэш-код его экземпляра не основан на значениях, установленных на нем, но более или менее случайным образом назначается каждому отдельному экземпляру.

Поскольку каждый запрос получает новый экземпляр Cookie, результатом является другой хеш-код каждый раз.

+0

Почему каждый запрос должен получить свежий экземпляр файла cookie? Если вы посмотрите на существующую логику, он должен отправить cookie только один раз и его работу таким образом. Я вижу, что только один файл cookie отправляется как часть первого ответа, а последующие ответы не содержат никаких ... Я говорил об этом конкретном случае, не должно быть никакого нового экземпляра? – JavaHopper

Смежные вопросы