Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在同一请求/响应中可用的Cookie_Java_Jsp_Cookies - Fatal编程技术网

Java 在同一请求/响应中可用的Cookie

Java 在同一请求/响应中可用的Cookie,java,jsp,cookies,Java,Jsp,Cookies,我在我的项目中发现了一种奇怪的行为(对我来说很奇怪,一个新手:D)。 基本上,在一个操作之后,我创建或更新一个cookie(如果它存在或不存在),并将其发送给客户端。奇怪的是,在jsp中,我只能在更新cookie的值时读取cookie(我得到的是更新后的值,而不是旧值),但在我创建cookie的第一次时(我可以使用浏览器工具查看cookie,但jsp似乎无法读取)。 这是正常的行为吗?如果是,您建议如何在第一时间获得cookie信息 非常感谢! RobertoCookie存储在客户机上,因此,如

我在我的项目中发现了一种奇怪的行为(对我来说很奇怪,一个新手:D)。 基本上,在一个操作之后,我创建或更新一个cookie(如果它存在或不存在),并将其发送给客户端。奇怪的是,在jsp中,我只能在更新cookie的值时读取cookie(我得到的是更新后的值,而不是旧值),但在我创建cookie的第一次时(我可以使用浏览器工具查看cookie,但jsp似乎无法读取)。 这是正常的行为吗?如果是,您建议如何在第一时间获得cookie信息

非常感谢!
Roberto

Cookie存储在客户机上,因此,如果响应尚未到达客户机,则其值不会更新,但在下一个请求中应可用。

Cookie用于在客户机向您发送任何请求时识别客户机。下面是您在设置cookie时所做的操作。您正在将cookie与响应一起发送到客户端。当该客户机发送下一个请求时,您设置的cookie会随之出现。因此,在设置cookie的jsp页面中,没有来自具有cookie的客户端的请求!所以你看不懂。但是你能做的就像杰杰上面说的。(即使用临时文件并在其中存储cookie的值,不要试图检索cookie。只需读取临时文件的值即可)。我看到你说你只有在更新的时候才能读cookie。在设置cookie之后,即使您不更新cookie,您也可以从未来的请求中读取cookie的值。希望这有帮助。

如果创建或更新cookie,它将存储在响应头中。如果您请求cookie,将从请求头请求它

我认为您的问题在于,您正在将相同的请求从servlet转发到JSP,并且您希望新的cookie已经在请求头中可用。事实并非如此。新cookie仅在后续请求中可用

您有两种选择:

  • 重定向到JSP。重定向将创建一个新请求
  • 将感兴趣的数据存储为请求属性,并让JSP中的EL访问它 顺便说一下,我在您的一条评论中看到,您正在使用纯Java代码来读取JSP中的Cookie。我只想说在JSP中使用Scriptlet是一种糟糕的做法。您可以在EL中轻松访问cookie值,如下所示:

    ${cookie.cookiename.value}
    

    [编辑]噢,天哪,现在我发现这是一个老话题。希望我的努力不是白费力气://

    你能发布你用来设置和读取cookie的代码吗?阅读:cookie[]cookies=request.getCookies();如果(cookies!=null){for(int i=0;我不确定问题出在哪里。我假设您正在jsp中编写cookie,因此您有可用的cookieObj(新值是什么),但您需要从那里读取它,很明显,在进一步请求之前,它不会出现在请求中。对,但是为什么在jsp中,当cookie已经存在时,我可以读取更新的值?在创建cookie时,我无法读取更新的值(在更新代码的同一点上)您应该在更新临时变量之前将cookie的上一个值分配给临时变量,否则,在更新之前您将不再获得原始值。