たとえば、データベースに影響を与える (レコードの追加/削除/更新) フォームを送信すると、リクエストは次のようになります。
POST /application/action=更新
たとえば、更新が完了したので、ユーザーをホームページに移動させたいとします。
Response.sendRedirect /application/action=ホーム
これは素晴らしくうまく機能します。ユーザーには POST 後にリダイレクトが送信されるため、ユーザーが F5 キーを押してページを更新しようとしても問題ありません。ただし、これを行った場合、これは機能しません。
requestDispatcher.forward(/application/action=home)
更新が完了した後にさまざまな種類のエラー/成功メッセージを表示する必要があるシナリオがある場合、POST 後に転送を行う可能性が最も高くなります。このようなシナリオでは、更新アクションが 2 回発生しないようにするにはどうすればよいでしょうか?
多くの安全なサイト(銀行)/支払いゲートウェイが、「戻る/更新ボタンを押さないでください」などのテキストを画面に表示してユーザーに通知する傾向があるのは、かなり面白いと思います.
これを処理するより良い方法はありませんか?これらのボタンを押さないようにユーザーに要求する以外に? 最後に確認したところ、「Vertical Response Cache」と呼ばれるものがありました。セッション内のリクエストの一意性を識別し、リクエストが重複している場合はキャッシュされたレスポンスを送信しようとするフィルター。この古典的な問題を解決する簡単な方法はありますか?
私が話していたバーティカル レスポンス キャッシュ ソリューションへのリンクは次のとおりです: http://www.fingo.info/en/articles/_1.html。ただし、これが実際にどの程度うまく機能するかはわかりません。