无法通过jsp:include添加JSP中包含的cookie

Ste*_*veL 5 cookies jsp servlets jspinclude

当添加cookie的代码是主页面(main.jsp)中包含的JSP片段(includes.jsp)的一部分时,通过JSP:INCLUDE,Cookies不会被添加到浏览器中.

当代码是主页面(main.jsp)的一部分时,代码工作正常.但是,我需要通过片段添加cookie,因为该片段用于我希望添加cookie的几十个页面中.

注意:jsp:include是main.jsp标题部分的一部分(该片段还添加了许多javascript和css引用)

这是片段:

Cookie cookie = new Cookie ("test","test cookie");
cookie.setMaxAge(365 * 24 * 60 * 60);
cookie.setPath("/");
response.addCookie(cookie2);
Run Code Online (Sandbox Code Playgroud)

当它是main.jsp的一部分时,上面的工作正常,但当它是添加到main.jsp via的片段的一部分时,它不起作用.几乎就像渲染片段后重置响应对象一样.

Bal*_*usC 5

<jsp:include>被窝里的用途RequestDispatcher#include()和它的文档说:

...

ServletResponse对象有其路径元素和参数保持从主叫方的不变.包含的servlet无法更改响应状态代码或设置标头; 任何改变的尝试都会被忽略.

...

(强调我的)

Cookie将在响应标头中设置.所以它停在这里.考虑编译时变量<%@include%>,它在主JSP的源代码中实际内联.