2013-09-30 70 views
0

無法通過JSP設置Cookie。但JavaScript的效果很好。無法使用JSP設置Cookie

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
...//imports and taglibs 
<%@ page import="javax.servlet.http.Cookie" %> 
<% 
    Cookie cookie = new Cookie("testJSP", "testJSP"); 
    cookie.setMaxAge(365*24*60*60); 
    response.addCookie(cookie); 
%> 
<div ... 
    <span><%=request.getCookies()[0].getName() + " " + request.getCookies()[1].getName()%></span> 

我會得到一個JSESSIOID和我的餅乾,我通過JS設置,但如果我嘗試添加

request.getCookies()[2].getName() 

我會得到一個「HTTP狀態500名「測試」 - 處理第18行的JSP頁面/WEB-INF/jsp/issueGrid.jsp時發生異常「 也在Firebug中,我看不到從JSP設置的cookie。 你能幫我嗎?我的問題在哪裏? Thx!

+0

檢查http://stackoverflow.com/questions/10883251/retriving-cookie-and-array-values- in-jstl-tags –

回答

0

在做response.addCookie(cookie);時,實際上是將cookie添加到當前的HTTP響應中。

要檢查所定義的餅乾,儘量避免文字索引和喜歡遍歷餅乾(或更好的使用JSTL c:foreach名單:

<% for (int i = 0; i < (request.getCookies() != null ? request.getCookies().length : 0); i++) { %> 
    <li> 
     <%= request.getCookies()[i].getName() + "=" + request.getCookies()[i].getValue()%> 
    </li> 
<% } %> 

順便說一句,如果您嘗試訪問該cookie(索引2)你添加到相同的有效載荷的響應,你不會得到它,因此一個NullPointerException,因此HTTP 500

+0

好的,Thx!但它不能解決我的問題,它有點不同 I d o'response.addCookie(cookie);'然後在瀏覽器中刷新頁面,例如我在螢火蟲中看不到我的新cookie。爲什麼不用'response.addCookie(cookie)設置;'?我可以在JSP中讀取cookie,但無法設置它。 –

+0

您可能必須嘗試隔離引發問題的代碼。我剛剛創建了一個簡單的項目,使用您的代碼創建cookie,我的循環出現了。 –

+0

在網絡標籤中的螢火蟲中,您應該在響應中看到'Set-Cookie'標頭。 –