プロが教えるわが家の防犯対策術!

現在、servletでWEBアプリケーションを作成しているのですが
ブラウザで「戻る」をした場合に、sessionに付けて受け渡しした
データが残ったまま前画面に戻り、次にアクションを起こした時に
新しいデータではなく、先ほどの古いデータを元にservletが起動して
しまいます。
 そして、ブラウザの更新ボタンを押すと初めて新しいデータが反映した
画面に遷移するのです。
 sessionを使ったWEBプログラムの場合、このようなブラウザの戻るキー
による動作不良はついて回るものなのでしょうか?
 このバクは私がsessionの使い方の失敗によるものと予想しているのですが
解決策が未だみつかりません。
 このような状態になった方の経験から、アドバイスをいたたければ幸いです。
また、sessionについて詳しい情報があるサイトがあれば教えていただきたい。
よろしくお願いします。

 

A 回答 (1件)

ブラウザの戻るボタンやsubmitボタンの二度押しによるトラブルは必ず起こります。


現状ではこれを回避するように実装するという以外に方法はありません。

>ブラウザで「戻る」をした場合に、sessionに付けて受け渡しした
>データが残ったまま前画面に戻り、次にアクションを起こした時に
>新しいデータではなく、先ほどの古いデータを元にservletが起動して
>しまいます。

これはブラウザから送信された情報ではなく、session中に保持されたデータを見にいってるからでは?

戻るボタンの対応の1つとして、ブラウザにも依存しますが、戻るボタンを押して欲しくないページ(servletで生成)では、Expireヘッダを付けておくというのも1つの手です。
IEとかは状況により平気でExpireヘッダを無視してくれたりしますが、絶対にあり得ないぐらい古い日付を付けておけば、再度submitされた場合、必ず新しいデータがservletに渡されてきます。

それともう1つは、servletで生成する各ページにマークをつけておく方法です。
つまり今どのページから遷移してきたかを記録しておく方法です。
これにより、異常な遷移が発生した場合、再入力の画面を出力するなどとするわけです。

他にも方法は考えられますが、取りあえずこんなところで試してみてください。
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。とても参考になりました。
もう一度ロジックを見直した結果、基準の情報を表示された
ページに持たせてそれを元にsessionに情報をつける
ことにしました。
 これなら、どこに戻ろうがそこからまたデータを渡す
ことができるので上記の現象は出なくなりました。
また、アドバイスをよろしくお願いします。

お礼日時:2001/12/27 16:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!