Java では、forward は「直接転送方式」を指します。ダイレクト方式の場合、クライアントのブラウザはリクエストのみを発行します。サーブレットはリクエストをサーブレット、HTML、JSP、またはその他の情報リソースに転送します。2 番目の情報リソースはリクエストに応答します。リクエスト オブジェクト リクエストでは、保存されたオブジェクトはそれぞれの情報リソースに保存されます。情報リソースは共有されます。
ユーザーは HTTP リクエストをサーバーに送信します。リクエストは、ユーザーに返される前に複数の情報リソースによって処理される場合があります。各情報リソースはリクエストを使用します。転送メカニズム: リクエストは相互に転送されますが、ユーザーはリクエストが転送されているとは感じません。転送方法に応じて、直接リクエスト転送(Forward)と間接リクエスト転送(Redirect)に分けられます。
直接転送方式 (Forward) では、クライアントとブラウザが 1 つのリクエストのみを発行します。サーブレット、HTML、JSP などの情報リソースに対して、2 番目の情報リソースがリクエストに応答し、リクエスト オブジェクト request に保存されます。オブジェクトは各情報リソースで共有されます。
間接転送方法 (リダイレクト) は実際には 2 つの HTTP リクエストであり、サーバーが最初のリクエストに応答すると、ブラウザは転送の目的を達成するために別の URL にリクエストを送信できるようになります。
よくある例を挙げると:
直接転送は次のようなものです。「A は B にお金を借りるように頼みましたが、B はそれを持っていないと言い、B は C に借りに行きました。もし借りられなかったら、そのメッセージを A に伝えます。To A";
間接転送は次と同等です。「A は B にお金を借りるように頼んだが、B はお金を持っていないと言ったので、彼はAにCからお金を借りるように頼んだ。」
ダイレクトフォワーディング方式(Forward)の詳細説明
ダイレクトフォワーディング方式の方がよく使われており、一般にリクエスト転送と言えばダイレクトフォワーディング方式を指します。ほとんどの Web アプリケーションにはコントローラーがあります。どの情報リソースにリクエストを転送するかを制御するのはコントローラ次第です。次に、これらの情報リソースがリクエストを処理し、処理後に他の情報リソースに転送してユーザーに返すという、古典的な MVC モデルです。
javax.servet.RequestDispatcher インターフェースは、リクエスト フォワーダーが実装する必要があるインターフェースです。Web コンテナは、このインターフェースを実装するオブジェクトをサーブレットに提供します。リクエスト転送の目的は、forward() メソッドを呼び出すことで達成されます。コード例は次のとおりです:
...... //Servlet里处理get请求的方法 public void doGet(HttpServletRequest request , HttpServletResponse response){ //获取请求转发器对象,该转发器的指向通过getRequestDisPatcher()的参数设置 RequestDispatcher requestDispatcher =request.getRequestDispatcher("资源的URL"); //调用forward()方法,转发请求 requestDispatcher.forward(request,response); }......
上図に示すリクエストを直接転送するプロセスは次のとおりです:
ブラウザは Servlet1 にアクセス リクエストを発行します。
Servlet1 は forward() メソッドを呼び出し、リクエストをサーバー側の Servlet2 に転送します。
最終的に Servlet2 が応答します。
ヒント: 実際、ブラウザを通じて、サーバーが使用するリクエスト転送方法を観察できます。ハイパーリンクをクリックすると、現在のアドレス バーがブラウザのアドレス バーに表示されます。 . 要求されたアドレス。サーバー側の応答が完了した後、アドレス バーのアドレスが変更されたことが判明した場合、要求が間接的に転送されたことが証明されます。逆に、アドレスが変わらない場合は、直接転送要求または転送なしを意味します。
拡張情報:
直接転送と間接転送の原則と違いは何ですか?
回答: 転送とリダイレクトは、直接転送と間接転送という 2 つのリクエスト転送方法を表します。コードに対応するのは、RequestDispatcher クラスの forward() メソッドと HttpServletRequest クラスの sendRedirect() メソッドです。
間接的な方法の場合、サーバーが最初のリクエストに応答すると、ブラウザは転送の目的を達成するために別の URL にリクエストを送信できるようになります。これは本質的に 2 つの HTTP リクエストであり、2 つのリクエスト オブジェクトに対応します。
ダイレクト方式の場合、クライアント ブラウザは 1 つのリクエストのみを発行し、サーブレットはそのリクエストをサーブレット、HTML、JSP、またはその他の情報リソースに転送します。2 番目の情報リソースはリクエストに応答します。2 つの情報リソースは共有します。同じAリクエストオブジェクト。
以上がJava での前進とはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。