我在Tomcat 7服务器上执行了以下Java Servlet代码。它应该计算来自单个浏览器的请求。这必须使用cookie而不是使用SessionAttributes来完成。代码:
@WebServlet("/")
public class CookieTestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
int count = 0;
if (cookies != null) {
for (Cookie c : cookies) {
if (c.getName() == "count") {
count = Integer.parseInt(c.getValue());
}
}
}
++count;
resp.addCookie(new Cookie("count", "" + count));
System.out.println(count);
}
}
多次运行后(刷新浏览器)Tomcat控制台总是输出1.似乎无论发送多少请求,cookie值总是为0.我做错了什么?
答案 0 :(得分:3)
尝试比较这样的字符串:
if(c.getName().equals("count"))
与相同字符串的==
测试相比,您很可能正在处理恰好具有相同内容的两个不同字符串。
在此之后,您会发现它可能仍然不起作用:无法保证cookie的顺序,因此您可能希望查找最大的值,而不是仅仅记住您看到的最后一个cookie值...