1

jspをリフレッシュした後、問題が発生しました。フォームを送信した後に更新(F5)ボタンを呼び出すと。毎回更新ボタンを呼び出した後、繰り返し保存されたデータ。

4

2 に答える 2

2

1.これを防ぐには、送信に ajax オプションを使用します。

また

2. REDIRECT オプションを使用し、フォーム送信後にページをリダイレクトします。

フォームをサーバーに送信するとどうなるか

フォームの「送信」ボタンをクリックすると、フォームに入力されたすべてのデータを含むリクエストが Web サーバーに送信されます。URL だけでなくフォーム データもリクエストの一部であり、このリクエストはブラウザによって記憶されます。ユーザーが「更新」をクリックすると、ブラウザーは要求を繰り返し、同じ URL とフォーム データを Web サーバーに再度送信します。

フォームは、GET または POST の 2 つの方法で送信できます。GET リクエストには副作用がありません。データを取得するだけで、データベースに変更を加えることはありません。別の方法で、要求が挿入、更新、削除操作などのデータを変更する場合、それは POST である必要があります。

最も重要な違いは、ユーザーが POST を繰り返そうとするとブラウザが警告することです。[更新] をクリックする と、操作が繰り返される可能性があることをユーザーに警告するダイアログ ボックスが表示され、ユーザーが本当にやりたいことを確認します。再提出します。ブラウザは、GET 要求を更新するときにこの確認を表示しません。

フォームが GET メソッドを使用している場合、POST に変更するのが最も簡単な解決策です。これは、少なくともユーザーが更新しようとすると警告されることを意味するためです。

しかし、より良い解決策は POST+REDIRECT+GET です。詳細についてはhttp://en.wikipedia.org/wiki/Post/Redirect/Get

于 2013-05-17T06:54:33.310 に答える
0

よく知られているを使用しますPRG pattern。詳細については、こちらをご覧ください:リンク

または、より簡単な解決策は、Action classadd oneからコントロールを送信request attributeしているときに、特定のリクエスト属性の JSp チェックを開始しているときに、コントロールを同じ JSp ページにリダイレクトすることです。

この背後にあるロジック: 説明: リダイレクトが発生すると、出力なしでブラウザーに匿名の要求が行われ、その後、ブラウザーは対象のリソースに暗黙の要求を行います。したがって、リクエストをリダイレクトするとブラウザから1回の往復が行われますが、それが以前のrequest & responseオブジェクトが破棄され、新しいリクエスト(暗黙的にブラウザから作成された)が生成され、新しいリクエストされたオブジェクトがコンテナによって作成される理由です。したがって、以前のリクエスト属性は存在しません。以前のデータも存在しないことを意味します。次回以降、JSP ページを更新しても何も起こりません。

于 2013-10-10T11:54:00.920 に答える