我正在尝试运行Tomcat中的cookie示例,但它给了我一些问题。 Tomcat为程序显示的源代码是
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class CookieExample extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// print out cookies
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
Cookie c = cookies[i];
String name = c.getName();
String value = c.getValue();
out.println(name + " = " + value);
}
// set a cookie
String name = request.getParameter("cookieName");
if (name != null && name.length() > 0) {
String value = request.getParameter("cookieValue");
Cookie c = new Cookie(name, value);
response.addCookie(c);
}
}
}
我在第java.lang.NullPointerException
行<{1}}
我正在传递cookieName和cookieValue。我尝试先设置cookie然后打印它,但它在同一行给出相同的错误。问题是,当我几个月前尝试这个程序时,它在Internet Explorer上工作正常,但在Chrome上却没有。它提供了一个http作为名称和代理作为我想的值。
答案 0 :(得分:2)
Cookie[] cookies = request.getCookies()
返回null,这是servlet引擎提交零cookie的方式。你需要通过检查来保护你的for循环。
它之前可能“有时”工作,因为当时IE会话中恰好有cookie而不是正在发送的chrome,从而允许循环执行。