私は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を非アクティブ化したいのですが、これを行う方法は?
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を検出する必要はありません。それを無効にするだけです。
汎用メソッドを使用する準備ができました:
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;
}
Cookie[] cookies = request.getCookies();
int i = 0;
for (Cookie cookie : cookies ) {
Sytem.out.println(cookies[i].getName());
Sytem.out.println(cookies[i].getValue());
i++;
}