无法使用JSP设置cookie

时间:2013-09-30 13:23:19

标签: java jsp cookies

无法通过JSP设置cookie。但JavaScript效果很好。

<%@ 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和一个名称&#34; test&#34;我通过JS设置的cookie,但是如果我尝试添加

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

我将获得&#34; HTTP状态500 - 在第18行和第34行处理JSP页面/WEB-INF/jsp/issueGrid.jsp时发生异常。 同样在Firebug中,我没有看到我从JSP设置的cookie。 你能帮助我吗?我的问题在哪里? THX!

1 个答案:

答案 0 :(得分:0)

执行response.addCookie(cookie);时,实际上是将Cookie添加到当前的HTTP响应中。

要检查定义的Cookie,请尝试避免使用字面索引,并优先循环使用Cookie列表(或者更好地使用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