0

我正在尝试获取 cookie 列表并通过连接一个新字符串来更改它们的值。这是我的代码:

    String color = request.getParameter("color");
    Cookie cookies[] = request.getCookies(); // get client's cookies;
    String cn;
    String cv;

    if ( cookies.length != 0 ) { 
        // get the name of each cookie
        for ( int i = 0; i < cookies.length; i++ ) 
            cn = cookies[ i ].getName();
            cv = cookies[ i ].getValue();
            cv = cv.concat(color);
            cookies[i].setValue(cv);
            response.addCookie(cookies[i]);

我收到一个错误cn = cookies[ i ].getName();错误是cannot find symbol并指示i. 这是为什么?任何人都可以帮忙吗?

4

3 回答 3

2

您的 for 循环没有大括号。这意味着只有循环定义下方的第一行for实际上是循环的一部分。结果,后续行引用了一个i不存在于其范围内的变量(因为它只存在于for循环的范围内。)

例如,在这个例子中,第一个 print 方法只会被调用,someValue == 123.但是,第二个 print 方法总是会被调用,因为它不在if语句中:

if(someValue == 123)
    System.out.println("This number equals 123");
    System.out.println("This number is greater than 122");

然而,在这个例子中,两个调用都在if语句中,所以它们都只会被调用,如果someValue == 123:

if(someValue == 123){
    System.out.println("This number equals 123");
    System.out.println("This number is greater than 122");
}

此外,if(cookies.length != 0)这是不必要的,因为 for 循环 ( i < cookies.length) 中的条件将始终涵盖这一点,因为 I 开始等于 0。

试试这个:

for(int i = 0; i < cookies.length; i++){
    cn = cookies[ i ].getName();
    cv = cookies[ i ].getValue();
    cv = cv.concat(color);
    cookies[i].setValue(cv);
    response.addCookie(cookies[i]);
}
于 2015-11-24T19:28:42.770 回答
0
Cookie[] cs = request.getCookies();
for(Cookie c: cs) {
    System.out.println(c.getName() + "  " + c.getValue());
    c.setValue(c.getValue() + " added Value");
    response.addCookie(c);
}

这可能会有所帮助。

于 2015-11-24T19:18:14.823 回答
-2

嘿cookie不能使用数组索引访问唯一的方法来使用像这样`在此处输入代码

 Cookie[] cookies = request.getCookies();

String userId = null;
for(Cookie cookie : cookies)
{
    if("uid".equals(cookie.getName()))
{
        userId = cookie.getValue();
    }
}
于 2015-11-24T19:05:06.507 回答