- PR -

Cookieの書き換え

1
投稿者投稿内容
kei111
会議室デビュー日: 2005/03/03
投稿数: 10
投稿日時: 2005-04-21 17:26
こんにちは

Cookieの扱いに関する質問なんですが、
ウィンドウで
Cookie cookie = new Cookie("name", "value");
cookie .setDomain(domain);
cookie .setMaxAge(0);
cookie .setPath("/");
response.addCookie(cookie);
を行ってcookieの値を変更しますが、そのウィンドウが開いている間は
前のcookieの値が反映されていて値を変更されません。
ブラウザを閉じれば当然反映されてくるのですが、ブラウザを開いたままでうまく
更新する方法はありませんか?

環境(java1.4.2、tomcat4.1、apache2)

よろしくお願いいたします。


山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-04-21 17:56
レスポンスにクッキーをセットするタイミングで、参照しているリクエストオブジェクトは、クッキーがセットされる前に来たものなので当然新しいクッキーは参照できません。

[ メッセージ編集済み 編集者: インギ 編集日時 2005-04-21 18:00 ]
kei111
会議室デビュー日: 2005/03/03
投稿数: 10
投稿日時: 2005-04-21 18:17
返信ありがとうございます。

ただ、結果としてCookieは更新できないわけですね。どうもありがとうございます。



[ メッセージ編集済み 編集者: kei111 編集日時 2005-04-21 18:19 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-04-21 19:08
うーん、更新できない、というのが具体的にどういう認識なのかはわかりませんが、更新はできます。

ブラウザを閉じないと反映されない、ということはないはずです。
ロス
常連さん
会議室デビュー日: 2005/03/25
投稿数: 26
投稿日時: 2005-04-22 09:01
引用:

kei111さんの書き込み (2005-04-21 17:26) より:
ウィンドウで
Cookie cookie = new Cookie("name", "value");
cookie .setDomain(domain);
cookie .setMaxAge(0);
cookie .setPath("/");
response.addCookie(cookie);
を行ってcookieの値を変更しますが、そのウィンドウが開いている間は
前のcookieの値が反映されていて値を変更されません。


よく読んでみると、これはブラウザの画面上(つまり、JSP)で行っていますか?

もしそうだとしたら、画面上に読み込まれた段階でcookieの値は決定していると思うのですが。。。(つまり反映されるのは次のレスポンスを受け取った画面のはず。)

サーブレット内でリクエストに含まれているCookieを取得して、レスポンスに新しく値を追加すれば、レスポンスが帰った時点(画面が表示された時点)でCookieは新しい値を利用しますよ。
kei111
会議室デビュー日: 2005/03/03
投稿数: 10
投稿日時: 2005-04-22 22:01
返信ありがとうございます。

JSPで全て行っています。
サーブレットは使用していません。
使用した方がいいと思いますが、いろいろとありますので…。

あるウィンドウ(JSP1)から別のウィンドウ(JSP2)を開いて
JSP2においてDBへの更新処理を行ってリクエストなどにクッキーの値をセットしようとしていました。
ここでJSP2でリクエストにセットするとかリダイレクトするとか処理しても元々開いているウィンドウのクッキーを変更できません。JavaのCookieオブジェクトを使用していますのが、JSP2で処理後にJSP1にうまく値を渡す方法はありますか?
ウィンドウ操作なども必要になってくると思いますが。

ただ、この方法自体が良くないと思っていますので現在はサーブレットで処理するようにしようと考えています。

アドバイスありがとうございました。










uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-04-22 23:38
「元のウィンドウのクッキーが書き換わらない」というのはどうやって確認しているので
しょうか。もしかしてJSP1というのがリロードされればいいだけではないでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)