現在、servletでWEBアプリケーションを作成しているのですが
ブラウザで「戻る」をした場合に、sessionに付けて受け渡しした
データが残ったまま前画面に戻り、次にアクションを起こした時に
新しいデータではなく、先ほどの古いデータを元にservletが起動して
しまいます。
そして、ブラウザの更新ボタンを押すと初めて新しいデータが反映した
画面に遷移するのです。
sessionを使ったWEBプログラムの場合、このようなブラウザの戻るキー
による動作不良はついて回るものなのでしょうか?
このバクは私がsessionの使い方の失敗によるものと予想しているのですが
解決策が未だみつかりません。
このような状態になった方の経験から、アドバイスをいたたければ幸いです。
また、sessionについて詳しい情報があるサイトがあれば教えていただきたい。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ブラウザの戻るボタンやsubmitボタンの二度押しによるトラブルは必ず起こります。
現状ではこれを回避するように実装するという以外に方法はありません。
>ブラウザで「戻る」をした場合に、sessionに付けて受け渡しした
>データが残ったまま前画面に戻り、次にアクションを起こした時に
>新しいデータではなく、先ほどの古いデータを元にservletが起動して
>しまいます。
これはブラウザから送信された情報ではなく、session中に保持されたデータを見にいってるからでは?
戻るボタンの対応の1つとして、ブラウザにも依存しますが、戻るボタンを押して欲しくないページ(servletで生成)では、Expireヘッダを付けておくというのも1つの手です。
IEとかは状況により平気でExpireヘッダを無視してくれたりしますが、絶対にあり得ないぐらい古い日付を付けておけば、再度submitされた場合、必ず新しいデータがservletに渡されてきます。
それともう1つは、servletで生成する各ページにマークをつけておく方法です。
つまり今どのページから遷移してきたかを記録しておく方法です。
これにより、異常な遷移が発生した場合、再入力の画面を出力するなどとするわけです。
他にも方法は考えられますが、取りあえずこんなところで試してみてください。
回答ありがとうございます。とても参考になりました。
もう一度ロジックを見直した結果、基準の情報を表示された
ページに持たせてそれを元にsessionに情報をつける
ことにしました。
これなら、どこに戻ろうがそこからまたデータを渡す
ことができるので上記の現象は出なくなりました。
また、アドバイスをよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP sessioncookieをではなくcookieを使わなければならない理由について… 4 2022/11/07 13:01
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- PHP フォームで戻った際に入力済みの値が残るのを消したい 3 2023/02/17 13:58
- その他(セキュリティ) 匿名チャットアプリのトラッキングについて。顔写真や個人情報の漏洩はあるのか。 2 2023/03/28 00:00
- IT・エンジニアリング プログラマの仕事内容 4 2022/08/13 00:34
- Windows 10 パソコンが使えず困ってます!(Microsoftアカウントでログイン後、PINコードに関するエラー) 2 2023/03/17 19:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
RTKPOSTのファイル生成について
-
正規表現で複数マッチ条件で悩...
-
プログラミング
-
プログラミング ソースコード
-
Pythonって何を意識した言語な...
-
chatGPTで次々と質問をしていく...
-
windowsでテキストファイルの各...
-
最新のプログラム言語を学ぶに...
-
Webサイト内に埋め込んだmp4動...
-
vba クリップボードクリアにつ...
-
家庭のパソコンで Python の 環...
-
Google ColaboでGUI作成
-
プログラミングの雑談とかでき...
-
プログラムの素朴な質問です 分...
-
Android Studio 難しい
-
昔のパソコン少年の武勇伝「店...
-
sublimit textっていうエディタ...
-
Arduinoに関する質問
-
フリーランスのエンジニアって...
-
Powershellとコマンドプロンプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
chatGPTで次々と質問をしていく...
-
昔のパソコン少年の武勇伝「店...
-
スカラーのベクトル微分
-
ハッシュテーブル(連想配列)が...
-
最新のプログラム言語を学ぶに...
-
pythonにてseleniumを使うも、...
-
Windowsのアプリ開発ってなんの...
-
vba クリップボードクリアにつ...
-
Google ColaboでGUI作成
-
sublimit textっていうエディタ...
-
フリーランスのエンジニアって...
-
ExcelVBAでFormulaR1C1を列範囲...
-
matplotlibで任意の角度の円弧...
-
そのまま使っただけなのに・・...
-
家庭のパソコンで Python の 環...
-
初心者powershellのPS1ファイル...
-
Webプログラムってネイティブア...
-
httpリクエストの送り元の特定
-
プログラミングで例えばゲーム...
-
rpa化する言語としてら何があり...
おすすめ情報