Java 当在后续响应中添加新cookie时,为什么cookie哈希代码会发生变化?

Java 当在后续响应中添加新cookie时,为什么cookie哈希代码会发生变化?,java,http,jakarta-ee,servlets,cookies,Java,Http,Jakarta Ee,Servlets,Cookies,} 各位好, 我有上面的代码,理想情况下它应该执行以下操作 对于第一个请求,因为没有PegaRULES cookie,所以应该在响应中添加一个 从沃兹的第二次请求开始,相同的cookie应该打印在浏览器上,我是说ClassName@hashcode饼干状的Cookie@Ac35c 我的观察 对于第一个请求,按预期显示空白页,并且响应中存在cookie 第二次请求,Cookie@af33d说 对于所有后续请求,它不应更改,即相同Cookie@af33d应在浏览器上打印 但是,我看到每个后续请求的值

}

各位好,

我有上面的代码,理想情况下它应该执行以下操作

对于第一个请求,因为没有PegaRULES cookie,所以应该在响应中添加一个

从沃兹的第二次请求开始,相同的cookie应该打印在浏览器上,我是说ClassName@hashcode饼干状的Cookie@Ac35c

我的观察

对于第一个请求,按预期显示空白页,并且响应中存在cookie

第二次请求,Cookie@af33d说

对于所有后续请求,它不应更改,即相同Cookie@af33d应在浏览器上打印 但是,我看到每个后续请求的值都发生了更改,我每次都刷新浏览器以触发后续请求

仅供参考,我正在使用Fiddler跟踪请求和响应

我在沃兹的第二次请求的后续响应中没有看到任何cookie,这是意料之中的。。我更关心的是打印在浏览器上的值,它在每次刷新浏览器(即触发新请求)时都会更改

PS:IE和Google Chrome的行为也一样,根据,javax.servlet.http.Cookieclass不会覆盖ObjecthashCode,因此其实例的哈希代码不是基于其上设置的值,而是或多或少随机分配给每个实例


由于每个请求都会获得一个新的Cookie实例,因此每次的结果都是不同的哈希代码。

为什么每个请求都会获得一个新的Cookie实例?如果你看一下这里的逻辑,它应该只发送cookie一次,并且是这样工作的。我只看到一个cookie发送作为第一个响应的一部分,后续响应不包含任何。。我说的是这个具体的案例,应该没有新的案例吧?
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);
}