为什么我的cookie值没有设置?

时间:2013-12-16 12:49:21

标签: java http tomcat servlets cookies

我在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.我做错了什么?

1 个答案:

答案 0 :(得分:3)

尝试比较这样的字符串:

if(c.getName().equals("count"))

与相同字符串的==测试相比,您很可能正在处理恰好具有相同内容的两个不同字符串。

在此之后,您会发现它可能仍然不起作用:无法保证cookie的顺序,因此您可能希望查找最大的值,而不是仅仅记住您看到的最后一个cookie值...