• 締切済み

ブラウザの「更新」を押すと何回も同じ内容が登録される

サーブレット作成しています。 webから入力した値をaccessに登録しているのですが、 ブラウザの「更新」を押すと、同じ内容がまた登録されてしまいます。 大分むかし、perlでcgiを作成していましたが、 同じことがあったような気がしますが・・ どのようにしたら回避できますか? 教えてください。

みんなの回答

  • covachan
  • ベストアンサー率38% (46/120)
回答No.2

まず、原因は何かと言う事から理解しなければならないと思います。 二重登録が起きてしまう原因は、URLへパラメータが渡された状態のまま 更新するからです。 であれば、URLもしくはパラメータを処理すれば良いのではないですか? 方法としては、登録フォームに"regist"みたいな名前のフィールドを作り そこにtrue等の文字列なりの値を入れます。そして登録処理を行った後に このrequestオブジェクトの"regist"フィールドにfalseを入れます。 こうする事によって登録処理時に"regist"フィールドを参照、判断する事で 二重登録は防げると思います。 もうひとつ簡単な方法として「登録しました」と言うような文字を 表示するだけのページを作成し、登録処理が終わったあとこのページへ フォワードします。そうすると更新されるURLは違うURLとなるので これでも回避できると思います。 なんとなく以前、この方法で同様の処理を行った記憶があるので 今、動作確認はしていませんが可能だったと思います。

takemaki
質問者

お礼

ありがとうございます。 なんとかなりました!

  • syousuke
  • ベストアンサー率61% (13/21)
回答No.1

連続して、submitボタンを押下した場合でしょうか?

takemaki
質問者

補足

押してないです。 でも押しても入力がなにもない場合の処理はさせてますので大丈夫です。