2012-04-26 15 views
1

サーブレットを使用してデータベースに挿入した後、ページを「ホーム」ページにリダイレクトします。しかし、私がリフレッシュすると、データはまだ引き継がれ、DBに重複が発生します。サーブレットはまだページ更新時にデータを渡します

システムの流れは次のようになります。プロジェクトがリストされたページを読み込みます。プロジェクトをクリックすると、ページのdivを変更してコメント用のテキストエリアを表示します。投稿のコメントをクリックすると、値がデータベースに挿入され、ページはプロジェクトのリストなしでページにリダイレクトされます。しかし、私がリフレッシュするとき、データはまだ渡されます。

私は実際にデータを削除したり、リフレッシュ時にデータを渡すことができない人がいますか?ありがとうございました!

+0

ページを更新すると、アドレスバーのURLは何ですか?ブラウザはフォームの再提出を求めていますか? –

答えて

0

この現象は、実際にがリダイレクトされずにホームJSPへの要求であるを転送していたことを示しています。実際のredirect after postでは、この問題はまったく発生しません。だから、

request.getRequestDispatcher("/home.jsp").forward(request, response); 
+0

これは、ユーザーがデータ要求属性を渡したい場合には機能しません。 –

+0

それをリダイレクトURLに含めてください。 – BalusC

0

を次のように最も可能性の高い状況が最初の要求を提出した後で

response.sendRedirect(request.getContextPath() + "/home.jsp"); 

ので、ない前進を次のようにあなたが本当にリダイレクトを実行していることを確認して、ブラウザーのurlが変更され、サーブレット-URLに示されます。リフレッシュボタンを押すとサーブレットに直接呼び出され、同じプロセスが再度実行されます。例えば -

現在のブラウザのURLがある - www.myurl.com/mypage.jsp

とリクエストURLは、サーブレットにwww.myurl.com/mypage.action(indicateです)

最初のリクエストを送信した後、ブラウザのURLはwww.myurl.com/mypage.actionになります。

したがって、ページを更新するたびにサーブレットに直接呼び出されます。

解決策は、要求を完了した後にサーブレットでjspページを再度リダイレクトすることです。

関連する問題