在 java 中获取 Cookie 值

2022-09-02 02:39:03

我已经在我的JSP中像这样初始化了cooke,

String timeStamp = new SimpleDateFormat("dd:MM:yyyy_HH:mm:ss:SSS").format(Calendar.getInstance().getTime());
timeStamp = timeStamp + ":" + System.nanoTime();
String loc = "/u/poolla/workspace/FirstServlet/WebContent/WEB-INF/"+timeStamp;
Cookie thecookie = new Cookie("thecookie", loc);
thecookie.setMaxAge(60*60*24);
response.addCookie(thecookie);

因此,创建的所有 Cookie 将具有相同的名称,但对于不同的用户访问时间,它们的值不同。

在java servlet结束时,我想停用/杀死在java servlet开始时传递的cookie,并说如果他们是并行使用系统的5个用户,我怎么知道在我的最后一个.java中为哪个用户停用哪个cookie?

例如,考虑

User 1 : cookie name `thecookie` value `AAA`
User 2 : cookie name `thecookie` value `BBB`
User 3 : cookie name `thecookie` value `CCC`
User 4 : cookie name `thecookie` value `DDD`
User 5 : cookie name `thecookie` value `EEE`

现在,在我的.java servlet结束时,我想停用在我的开头分配的值CCC的cookie.java而不会干扰其他cookie值,如何执行此操作?


答案 1

您正在使用错误的方法读取 Cookie。

Cookie[] cookies = request.getCookies();

if (cookies != null) {
 for (Cookie cookie : cookies) {
   if (cookie.getName().equals("cookieName")) {
     //do something
     //value can be retrieved using #cookie.getValue()
    }
  }
}

使用这个。无需为特定用户检测cookie,只需将其停用即可。


答案 2

即用型通用方法:

public static Cookie getCookie(HttpServletRequest request, String name) {
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        for (Cookie cookie : cookies) {
            if (cookie.getName().equals(name)) {
                return cookie;
            }
        }
    }
    return null;
}

推荐