0

无法通过 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 和我通过 JS 设置的 cookie 的名称“test”,但如果我尝试添加

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

我会得到一个“HTTP 状态 500 - 在第 18 行处理 JSP 页面 /WEB-INF/jsp/issueGrid.jsp 时发生异常” 同样在 Firebug 中,我看不到我从 JSP 设置的 cookie。你能帮助我吗?我的问题在哪里?谢谢!

4

1 回答 1

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

于 2013-09-30T15:11:02.487 回答