【问题标题】:Why is my cookie value not set?为什么我的 cookie 值没有设置?
【发布时间】:2014-01-03 20:52:29
【问题描述】:

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

【问题讨论】:

    标签: java http tomcat servlets cookies


    【解决方案1】:

    尝试像这样比较字符串:

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

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

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

    【讨论】:

    • 我忘记了 Java 中的字符串比较...现在效果很好,谢谢!
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多