Java: 有没有简单的通过名字获取cookie的方法?
Java: Is there a simple way to get cookie by name?
我搜索了有关如何通过名称获取 cookie 的解决方案,所有解决方案都指向使用 for-loops
和 if
语句。请参阅下面的代码。
for (Cookie cookie : cookies) {
if (cookie.getName().equals("<NAME>")) {
// do something here
}
if (cookie.getName().equals("<ANOTHER_NAME>")) {
// do something here
}
// and so on...
}
有没有更简单的方法来通过名称获取值而无需执行循环和 if's?
我需要对我想要检索的某些 cookie 进行一些 "certain" 处理 另外,我不想遍历每个 cookie!可能有 10 个或更多,而我只需要三个左右。
逻辑(正如 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
// ...
Cookie 名称不是唯一的,因此使用 Cookie 名称作为映射键不是理想的方法。
由于 cookie 名称不是唯一的,这可能就是此 Java API
从未更新以提供 getCookieByName()
方法的原因。
或者在现代 Java:
Map<String, String> cookieMap =
Arrays.stream(request.getCookies())
.collect(Collectors.toMap(Cookie::getName, Cookie::getValue));
我搜索了有关如何通过名称获取 cookie 的解决方案,所有解决方案都指向使用 for-loops
和 if
语句。请参阅下面的代码。
for (Cookie cookie : cookies) {
if (cookie.getName().equals("<NAME>")) {
// do something here
}
if (cookie.getName().equals("<ANOTHER_NAME>")) {
// do something here
}
// and so on...
}
有没有更简单的方法来通过名称获取值而无需执行循环和 if's?
我需要对我想要检索的某些 cookie 进行一些 "certain" 处理 另外,我不想遍历每个 cookie!可能有 10 个或更多,而我只需要三个左右。
逻辑(正如 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
// ...
Cookie 名称不是唯一的,因此使用 Cookie 名称作为映射键不是理想的方法。
由于 cookie 名称不是唯一的,这可能就是此 Java API
从未更新以提供 getCookieByName()
方法的原因。
或者在现代 Java:
Map<String, String> cookieMap =
Arrays.stream(request.getCookies())
.collect(Collectors.toMap(Cookie::getName, Cookie::getValue));