Java での前進とは

(*-*)浩
リリース: 2020-09-18 10:45:13
オリジナル
8497 人が閲覧しました

Java では、forward は「直接転送方式」を指します。ダイレクト方式の場合、クライアントのブラウザはリクエストのみを発行します。サーブレットはリクエストをサーブレット、HTML、JSP、またはその他の情報リソースに転送します。2 番目の情報リソースはリクエストに応答します。リクエスト オブジェクト リクエストでは、保存されたオブジェクトはそれぞれの情報リソースに保存されます。情報リソースは共有されます。

Java での前進とは

ユーザーは 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);    
}......
ログイン後にコピー

Java での前進とは

上図に示すリクエストを直接転送するプロセスは次のとおりです:

  • ブラウザは Servlet1 にアクセス リクエストを発行します。

  • Servlet1 は forward() メソッドを呼び出し、リクエストをサーバー側の Servlet2 に転送します。

  • 最終的に Servlet2 が応答します。

ヒント: 実際、ブラウザを通じて、サーバーが使用するリクエスト転送方法を観察できます。ハイパーリンクをクリックすると、現在のアドレス バーがブラウザのアドレス バーに表示されます。 . 要求されたアドレス。サーバー側の応答が完了した後、アドレス バーのアドレスが変更されたことが判明した場合、要求が間接的に転送されたことが証明されます。逆に、アドレスが変わらない場合は、直接転送要求または転送なしを意味します。

拡張情報:

直接転送と間接転送の原則と違いは何ですか?

回答: 転送とリダイレクトは、直接転送と間接転送という 2 つのリクエスト転送方法を表します。コードに対応するのは、RequestDispatcher クラスの forward() メソッドと HttpServletRequest クラスの sendRedirect() メソッドです。

間接的な方法の場合、サーバーが最初のリクエストに応答すると、ブラウザは転送の目的を達成するために別の URL にリクエストを送信できるようになります。これは本質的に 2 つの HTTP リクエストであり、2 つのリクエスト オブジェクトに対応します。

ダイレクト方式の場合、クライアント ブラウザは 1 つのリクエストのみを発行し、サーブレットはそのリクエストをサーブレット、HTML、JSP、またはその他の情報リソースに転送します。2 番目の情報リソースはリクエストに応答します。2 つの情報リソースは共有します。同じAリクエストオブジェクト。

以上がJava での前進とはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート