Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ブラウザの更新ボタンを押された場合の処理について

現在Servletを利用したWebシステムを作成しようとしています。
発注するシステムで、発注完了後に表示された結果画面でブラウザの更新ボタンを押すと「情報を送信しないと〜」というプロンプトが出現し『OK』をクリックすると情報が送信され、再度更新プログラムが動作してしまいます。(2重発注された状態になってしまいます。)
改善案を考えたのですが、この方法ですと1つの処理でWebサーバに2回のリクエストがかかってしまい、負荷が上がってしまうと考えられます。
また、Servlet1からServlet2への値渡しにSessionオブジェクトを利用しなくてはならない気がします。
良い対策等ありましたら、ご教授願います。
【処理の流れ】
 クライアントからのリクエスト
   ↓
 Servlet1(処理⇒forwardで結果画面表示)
   ↓
 クライアントに画面表示
【改善案】
 クライアントからのリクエスト
   ↓
 Servlet1(処理⇒redirectでServlet2へリクエスト)
   ↓
 Servlet2(forwardで結果画面表示)
   ↓
 クライアントに画面表示

1

回答

91527

閲覧

1件の回答

評価

0

この辺はWebアプリケーションを作る際の壁だったりしますよね。
あと、2重押しとか。

方法はいろいろあって、その時々により何が良いかは変わってきます。
Strutsだとトークンを使ったりして処理します。
Servletとのことなので、発注前に何かセッションで値を作っておき、発注後にそのセッションを捨ててしまう、という手があります。
発注時には、作った値が無いとエラーにする、ってな処理になります。

また、あるユーザーがデータを更新すると、そのユーザーは一定期間更新させないようにするとか、発注前に一意な値をブラウザへ発行し、発注時にその一意な値がブラウザから送られてきているかチェックするとか、正しいルートでないと更新させない方法はいろいろありますので、よ〜く考えてみてください。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。