Java

フォワードとリダイレクトの概要・違いについて解説します

1. フォワードとリダイレクトの概要

コーディングを行っているとき、サーブレットからjspへ・または別のサーブレットへ処理を渡したいということがあると思います。

そんな時に使用するのがフォワードとリダイレクトです。この技術を使うことでサーブレットとjspとの連携や、サーブレットと別のサーブレットとの連携を行うことができます。

<例>

public class SampleCode extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String name = "jack";
String dob = "2001/02/12";
String sex = "male";

request.setAttribute("name", name);

request.setAttribute("dob", dob);

request.setAttribute("sex", sex);

ここで処理を〇〇〇.jspに渡して結果を画面に表示させたい!

}

}

 

👇フォワードを使用してjspに処理を渡す👇

public class SampleCode extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String name = "jack";
String dob = "2001/02/12";
String sex = "male";

request.setAttribute("name", name);

request.setAttribute("dob", dob);

request.setAttribute("sex", sex);

//fowardを使用

RequestDispatcher dispatcher = request.getRequestDispatcher("〇〇〇.jsp");
dispatcher.forward(request, response);

}

}

 

 

フォワードとリダイレクトに関して、次の記事でより詳しく説明していきます

フォワード

リダイレクト

 

2. フォワードとリダイレクトの違い

フォワードとリダイレクトはユーザから見ると同じような動きをしますが、内部で行われている処理は全く異なります。

違い➀

転送処理の方法

まずフォワードの説明です。

フォワードはサーバ内部での処理の受け渡しを行います。ユーザがぺージAを要求するとサーバ内部でページAからページBに処理が受け渡され、その結果がレスポンスとして帰ってきます。(レスポンスとしても指定したURLで結果が返されます)

次はリダイレクトの説明です。

ユーザからページAを要求された場合は、サーバはページBにリダイレクトするようにユーザに要求します。ユーザは自動的にページBにリダイレクトし、サーバからページBがレスポンスとして帰ってきます。(レスポンスとして帰ってくるURLはリダイレクト先のものとなります)

このようにリダイレクトではリクエストとレスポンスが2回ずつ行われています。(1回は暗黙的に行われているためユーザからの見た目は変わりません)

違い➁

転送先の対象
フォワード :同一アプリケーション内のサーブレットクラスまたはjspファイルが対象
リダイレクト :URLでブラウザからリクエストできるものすべてが対象(他サイトも可)

 

違い➂

レスポンス時のURL
フォワード :リクエストで指定したURLが表示される
リダイレクト :リダイレクト先のURLが表示される

 

違い➃

リクエストスコープの引継ぎ
フォワード :リクエストスコープの引継ぎ可能
リダイレクト :リクエストスコープの引継ぎ不可能

 

以上でこの記事は終了となります。ありがとうございました。

-Java

Copyright© タカログ , 2022 All Rights Reserved Powered by AFFINGER5.