Java:有没有一种简单的方法按名称获取cookie?

11

我已经搜索了如何通过名称获取cookie的解决方案,所有的解决方案都指向使用 for-loopsif 语句。请参见下面的代码。

for (Cookie cookie : cookies) {
    if (cookie.getName().equals("<NAME>")) {
        // do something here
    } 
    if (cookie.getName().equals("<ANOTHER_NAME>")) {
        // do something here
    } 
    // and so on...
}

是否有更简单的方法,可以通过名称获取值,而无需进行循环和条件判断?

我需要对某些 cookie 进行“特定”处理,但我不想遍历每个 cookie!可能有 10 个或更多的cookie,而我只需要其中三个或者其他一些。


将 cookies 放入 Map<String, Cookie>(或 Multimap)中。 - Matt Ball
哦,那真的可能行得通 :D 我会立刻尝试!谢谢 :D - Tech Newbie
3
投票者请注意:不要只因为这是一个初学者级别的问题而进行负评。该问题格式正确,表述清晰,提问者还展示了自己尝试的例子。请以内容本身为准,理性投票。 - Sandy Chapman
3个回答

5

根据Matt Ball评论中提出的建议,逻辑如下:

// ...
Map<String, Cookie> cookieMap = new HashMap<>();
for (Cookie cookie : cookies) {
    cookieMap.put(cookie.getName(), cookie);
}

Cookie firstRequiredCookie = cookieMap.get("<NAME>");
// do something with firstRequiredCookie 
Cookie nextRequiredCookie = cookieMap.get("<ANOTHER_NAME>");
// do something with nextRequiredCookie 
// ...

1
谢谢大家!:D 忘记我的后续问题了,我现在明白了:D 谢谢!我本可以点赞的,但我的声望还不允许我投票。 - Tech Newbie

0

在现代Java中,可以选择以下方式:

Map<String, String> cookieMap = 
                Arrays.stream(request.getCookies())
                      .collect(Collectors.toMap(Cookie::getName, Cookie::getValue));

0

Cookie 名称不唯一,因此使用 Cookie 名称作为映射键并不是一个理想的方法。

由于 Cookie 名称不唯一,这可能是该 Java API 从未更新为提供 getCookieByName() 方法的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接