Java

【Java】フォワードを使ってサーブレットからサーブレットに遷移する

ウハブログ

こんにちは、大学時代にプログラミングを始め、現在はエンジニアをしているuhablog(ウハブログ)です。

今回の記事ではfowardメソッドを使ってサーブレットからサーブレットに処理を遷移する方法についてコードを用いながら解説していきます。

\\現役エンジニアに質問できる//

月額制スクールFreeks公式サイトはこちら

まずは無料カウンセリングから

サーブレットからサーブレットに遷移するためのfowardメソッド

サーブレットからサーブレットに遷移するためにはfowardメソッドを利用することで実装することができます。

fowardメソッドをRequestDispatcherインターフェースのオブジェクトを取得する必要があります。

そしてRequestDispatcherインターフェースのオブジェクトはサーブレットのdoGetメソッドやdoPostメソッドの引数として受け取っているHttpServletRequestオブジェクトのgetRequestDispatcherメソッドを呼び出すことで取得することができます。

具体的には次のようなコードでfowardメソッドを利用することができます。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
    // fowardメソッドを使ってサーブレットからサーブレットに遷移する
    RequestDispatcher rd = request.getRequestDispatcher("/遷移先のサーブレットのパス");
    rd.forward(request, response);
}

サンプルプログラム

では実際のサンプルプログラムで確認してみましょう。
今回作成するプログラムは次のような流れで処理を遷移させます。

  1. servlet-to-servlet.htmlからServlet1を呼び出す
  2. Servlet1からServlet2を呼び出す
  3. Servlet2からservlet-to-servlet-result.htmlを呼び出して画面を表示する

この2番が今回のメインのサーブレットからサーブレットに処理を遷移する箇所になります。
今回はServlet1とServlet2でコンソールに文字列を表示して、処理が遷移していることを確認します。

servlet-to-servlet.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サーブレットからサーブレットへフォワードして遷移する</title>
</head>
<body>
    <form action="Servlet1" method="get">
        <input type="submit" value="Servlet1からServlet2に遷移する">	
    </form>
</body>
</html>

Servlet1.java

package uhablog;

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 Servlet1
 */
@WebServlet("/Servlet1")
public class Servlet1 extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
        // コンソールに文字列を出力する
        System.out.println("Servlet1の処理");
		
        // fowardメソッドを使ってServlet2に処理をうつす
        RequestDispatcher rd = request.getRequestDispatcher("/Servlet2");
        rd.forward(request, response);
    }
}

Servlet2.java

package uhablog;

import java.io.IOException;

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 Servlet2
 */
@WebServlet("/Servlet2")
public class Servlet2 extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
        // コンソールに文字列を出力する
        System.out.println("Servlet2の処理");
		
        // fowardメソッドを使って、htmlを画面に表示する
        request.getRequestDispatcher("/servlet-to-servlet-result.html").forward(request, response);
    }
}

servlet-to-servlet-result.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>フォワード結果</title>
</head>
<body>
    <h1>Servlet1からServlet2へ遷移しました</h1>
</body>
</html>

コードが書けたら、サーバーを立ち上げて、servlet-to-servlet.htmlを表示します。

ボタンを押すと次の画面に遷移します。

コンソールを確認して次のように出力されていたらうまくサーブレットからサーブレットへ処理が遷移しています。

Servlet1の処理
Servlet2の処理

以上がサーブレットからサーブレットに処理を遷移させる方法でした。

独学が辛いあなたへ

プログラミング学習にはエラーやわからないところというのはつきものです。

人に聞けば5分でわかることも、自分一人で悩んでいると1日数日時間を費やしてしまうこともあります。

そんな時にプログラミングスクールであれば、質問できる環境を手に入れることができます。

Freeksはいつでもどこでも豊富なカリキュラムを学ぶことができる月額制のプログラミングスクールです。

Freeksでは無料体験を行なっているので、質問できる環境を手に入れて、プログラミング学習を挫折することなく続けていきたいという方は無料体験に参加してみてください。

Freeks公式サイトはこちら>>>

【関連記事】Freeks評判、口コミ

他のプログラミングスクール

月額10,780円のサブスク型プログラミングスクール!
>>Freeks公式サイト
20代におすすめ!無料で未経験からプログラマー就職まで実現できる!
>>ProgrammerCollege公式サイト
パーソナルメンターがつく充実したサポート
>>DMM WEBCAMP公式サイト

おすすめのプログラミングスクールについて詳しく知りたいという方はこちらの記事も参考にしてみてください。

無料体験あり

-Java
-, , , ,