1.フォワードの概要
サーブレットプログラムを作成するうえでは「サーブレットから特定のjspクラスを呼び出して、処理結果を画面に表示する」や「サーブレットクラスから別のサーブレットクラスを呼びだす」といった処理の記載が必要となります。
こんな時に利用するのがフォワードです。
フォワードを使用することで、処理をサーブレットからjspファイルや、別のサーブレットクラス移す(サーブレットとjspを連携する)ことが可能となります。
2.フォワードを用いたサンプルプログラム
フォワードを実際に用いたコードを見ていきましょう。
サーブレットからjspへのフォワード
基本構文1
【jspファイルにフォワード】
RequestDispatcher dispatcher = request.getRequestDispatcher("フォワード先のjspファイル名");
dispatcher.forward(request, response);
※("フォワード先のjspファイル名")には/WebContent以下のパスから記載していきます。
※フォワードを行う場合、RequestDispatcherインターフェースのインスタンスを作成する必要があります。
<サンプルコード>
Tojsp.java(jspクラスへのフォワードを行うサーブレットファイル)
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class mainController
*/
@WebServlet("/Tojsp")
public class Tojsp extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//対象jspのクラス名を指定してフォワード ※WebContest以下のパスから記載する
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/Display.jsp");
dispatcher.forward(request, response);
}
}
Display.jsp(フォワードの対象となるjspクラス)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--ブラウザに文字「Display.jsp」表示する-->
<h3>Display.jsp</h3>
</body>
</html>
ファイル構成
実行結果
サーブレットから別のサーブレットへのフォワード
基本構文2
【サーブレットクラスにフォワード】
RequestDispatcher dispatcher = request.getRequestDispatcher("フォワード先のURLパターン");
dispatcher.forward(request, response);
※("フォワード先のURLパターン")にはフォワード先に指定したいサーブレットのURLパターンを記載します。
※フォワードを行う場合、RequestDispatcherインターフェースのインスタンスを作成する必要があります。
<サンプルコード>
ToServlet.java(別サーブレットファイルへのフォワードを行うサーブレットファイル)
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class mainController
*/
@WebServlet("/ToServlet")
public class ToServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//対象サーブレットのURLパターンを指定してフォワード
RequestDispatcher dispatcher = request.getRequestDispatcher("/DisplayServlet");
dispatcher.forward(request, response);
}
}
DisplayServlet.java(フォワードの対象となるサーブレットファイル)
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class mainController
*/
//URLパターンを設定
@WebServlet("/DisplayServlet")
public class DisplayServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//ブラウザに文字「DisplayServlet」を表示する
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<boky>");
out.println("<H3>DisplayServlet</H3>");
out.println("</body>");
out.println("</html>");
}
}
実行結果
以上でこの記事は終了となります。ありがとうございました(^^♪