Java

フォワード( jspとサーブレット間の連携)

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>");

}

}

 

実行結果

 

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

-Java

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