Java Cookie添加/删除问题?

时间:2010-08-04 18:53:16

标签: java cookies spring-mvc

我的问题在于以下我尝试在我要读取所有cookie并创建新对象并将其分配给Spring View之后添加新cookie和几行,问题是我的cookie不是补充说,一切都在页面重新加载后工作但不是同时...

    Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals(
                "proizvod_" + Integer.toString(proizvodiId))) {
            String kolicina_cur = cookies[i].getValue();
            int pom = Integer.parseInt(kolicina_cur);
            cookies[i].setValue(Integer.toString(pom + kolicina));
            response.addCookie(cookies[i]);                     
        }

    }
}

Cookie[] cookiesN = request.getCookies();
ProizvodiCommand proizvodiCommand = new ProizvodiCommand();
if (cookiesN != null) {
    for (int i = 0; i < cookiesN.length; i++) {
        if (cookiesN[i].getName().startsWith("proizvod_")) {
            String ime = cookiesN[i].getName();
            String kolicinaN = cookiesN[i].getValue();
            String id_s = ime.replace("proizvod_", "");
            int id = Integer.parseInt(id_s);
            // prepare for spring view....
        }


    }
}

我删除了几行用于弹簧数据准备,以便更好地查看。

当我尝试删除cookie并收集下面几行的所有现有cookie时会发生同样的问题,它会在页面重新加载后运行。

我试图添加一些延迟,但没有帮助...如果有人有解决方案继续与我分享:)

谢谢!

2 个答案:

答案 0 :(得分:1)

首先,您发布的代码看起来只修改已存在的Cookie而不是添加新Cookie。

其次,每次调用request.getCookies()都会在单个请求期间返回相同的cookie /值对。因此,您的第二个代码块看不到您的新Cookie。

尝试这些更改(在第二个代码块中):

Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals(
                "proizvod_" + Integer.toString(proizvodiId))) {
            String kolicina_cur = cookies[i].getValue();
            int pom = Integer.parseInt(kolicina_cur);
            cookies[i].setValue(Integer.toString(pom + kolicina));
            response.addCookie(cookies[i]);                     
        }

    }
}

ProizvodiCommand proizvodiCommand = new ProizvodiCommand();
if (cookies != null) {
    for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().startsWith("proizvod_")) {
            String ime = cookies[i].getName();
            String kolicinaN = cookies[i].getValue();
            String id_s = ime.replace("proizvod_", "");
            int id = Integer.parseInt(id_s);
            // prepare for spring view....

    }
}

答案 1 :(得分:0)

如果我理解你的话,你会阅读带有请求的cookie,而不是在响应中添加cookie。然后期望看到随请求提供的cookie中添加的cookie ...