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);
}
}
フォワードとリダイレクトに関して、次の記事でより詳しく説明していきます
フォワード 続きを見る
フォワード( jspとサーブレット間の連携)
リダイレクト 続きを見る
リダイレクトとは?設定方法を解説します【Javaサーブレット】
2. フォワードとリダイレクトの違い
フォワードとリダイレクトはユーザから見ると同じような動きをしますが、内部で行われている処理は全く異なります。
違い➀
まずフォワードの説明です。
フォワードはサーバ内部での処理の受け渡しを行います。ユーザがぺージAを要求するとサーバ内部でページAからページBに処理が受け渡され、その結果がレスポンスとして帰ってきます。(レスポンスとしても指定したURLで結果が返されます)
次はリダイレクトの説明です。
ユーザからページAを要求された場合は、サーバはページBにリダイレクトするようにユーザに要求します。ユーザは自動的にページBにリダイレクトし、サーバからページBがレスポンスとして帰ってきます。(レスポンスとして帰ってくるURLはリダイレクト先のものとなります)
このようにリダイレクトではリクエストとレスポンスが2回ずつ行われています。(1回は暗黙的に行われているためユーザからの見た目は変わりません)
違い➁
フォワード | :同一アプリケーション内のサーブレットクラスまたはjspファイルが対象 |
リダイレクト | :URLでブラウザからリクエストできるものすべてが対象(他サイトも可) |
違い➂
フォワード | :リクエストで指定したURLが表示される |
リダイレクト | :リダイレクト先のURLが表示される |
違い➃
フォワード | :リクエストスコープの引継ぎ可能 |
リダイレクト | :リクエストスコープの引継ぎ不可能 |
以上でこの記事は終了となります。ありがとうございました。