2011-09-23 58 views
4

當添加cookie的代碼是包含在主頁面(main.jsp)中的JSP(include.jsp)片段的一部分時,Cookie不會添加到瀏覽器中)通過JSP:INCLUDE。無法通過jsp添加包含在JSP中的cookie:include

當它是主頁面(main.jsp)的一部分時,代碼工作正常。然而,我需要通過片段添加cookie,因爲該片段用於我想要添加cookie的數十頁內。

注:JSP:包括是main.jsp中的報頭部分的一部分(該片段也增加了大量的JavaScript和CSS引用的)

這裏是片段:

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

的上面的代碼當它是main.jsp的一部分時工作正常,但當它是通過添加到main.jsp中的片段的一部分時不起作用。就好像響應對象在片段被渲染後被重置。

回答

5

<jsp:include>封面RequestDispatcher#include()下使用其docs說:

...

ServletResponse對象有其路徑元素和參數保持從主叫方的不變。包含的servlet無法更改響應狀態碼或設置標題; 任何嘗試進行更改都將被忽略

...

(重點煤礦)

Cookies是在響應頭進行設置。所以它停在這裏。考慮編譯時間變種<%@include%>,它在主JSP的源代碼中被字面地內聯。

+0

獲取更多信息:https://developer.jboss.org/thread/39042?_sscc=t –