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」のようなルーティングサーブレットの名前)を表示することになります()。フォームページとフォローアップはまったく別のページなので、間違いはありません。フォローアップページはフォームとほとんど関係ありません(送信されたフォームデータの一部を表示する場合を除く)。
ありがとうございました。