web-dev-qa-db-ja.com

javaでCookie値を取得

私は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サーブレットの終わりに、Javaサーブレットの開始時に渡されたCookieを非アクティブ化/強制終了し、5人のユーザーが使用している場合システムは並行して、my.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`

さて、my.Javaサーブレットの最後に、他のCookie値を邪魔することなくmy.Javaの最初に割り当てられた値CCCでCookieを非アクティブ化したいのですが、これを行う方法は?

12
user1733583

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を検出する必要はありません。それを無効にするだけです。

27
Deepak Tiwari

汎用メソッドを使用する準備ができました:

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;
}
5
Pavel Vlasov
Cookie[] cookies = request.getCookies();
int i = 0;
for (Cookie cookie : cookies ) {

  Sytem.out.println(cookies[i].getName());
  Sytem.out.println(cookies[i].getValue());

  i++;
}
4
shrikant