无法通过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!
答案 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