2016-12-30 6 views
0

EDITは:明確にするため「フォローup.jsp」にファイル名を変更しました。のJava Web開発:リクエストオブジェクトを渡しながら、別のサーブレットから転送制御(バージョン2)

これは私が以前の今日掲示長い質問(リンク:Java web development: transfer control from one servlet to another while passing the request object)の短い、とうまくいけば、より良いバージョンです。

提出時にPOST-edフォームがあります。 POSTアクションが行われた対応するサーブレットで、検証が成功したかどうかに応じて、フォームページを再度表示するか、フォローアップページを表示します。 BOTHフォームページフォローアップページがユーザーによって送信されたフォームデータを必要とします。フォーム・ページにはフォーム・フィールドを再入力する必要があり、フォローアップ・ページではこのデータの一部を表示する必要があります(たとえば、ユーザーが正しいことを再確認するなど)。したがって、私は、送信されたデータを含む要求オブジェクトを両方のページで使用できるようにしたいと思います。

バックフォームへ転送は問題ではない:。

するRequestDispatcher RD = のgetServletContext()getRequestDispatcher( "/ form.jsp")。 rd.forward(request、response);

しかし、送信されたフォームデータを含むリクエストオブジェクトに引き続きそのフォローアップページでアクセスできるように、フォローアップページ(follow-up.jspなど)にどのように連絡すればよいですか?

次は動作していないよう:

response.sendRedirect("/MyProject/follow-up.jsp"); 

「名前」は、この属性で、フォーム処理サーブレットにリクエストオブジェクトの属性に割り当てられたフォームパラメータであればこれはあります便宜上「名前」とも呼ばれ、follow-up.jspの次​​の行が表示されます。

名前は$ {name}です。

は、ユーザーが送信した名前を印刷しません(代わりに、「あなたの名前は:」のみを印刷します)。つまり、元の要求オブジェクトの属性は、follow-up.jspで使用できなくなります。これは、response.sendRedirectがという新しい HTTPリクエスト(独自のリクエストおよびレスポンスオブジェクトを使用)をトリガーするという点で意味があります。しかし、私が望むものではありません。

sendRedirectがPOST要求を発行できない(GETのみを使用する、[リンク] response.sendRedirect() from Servlet to JSP does not seem to work参照)という別の懸念があります。

編集:また、私は私が実際に使用することができます実現:

rd.forward(要求、応答);両方の要求のための

。しかし、その結果、両方のページがアドレスバーに同じアドレス(すなわち、「...../Register」のようなルーティングサーブレットの名前)を表示することになります()。フォームページとフォローアップはまったく別のページなので、間違いはありません。フォローアップページはフォームとほとんど関係ありません(送信されたフォームデータの一部を表示する場合を除く)。

ありがとうございました。

答えて

0

この場合、私はあなたが要求に含まれていないデータを会話スコープまたはセッションスコープに保存する必要があると信じています...リダイレクトに関するポストをサポートしていません...理想的にはすべてのリダイレクトリクエストを取得する必要があります.....あなたがリダイレクトする場合は、POSTリクエストを使用してアプローチを再評価してください。

関連する問題