今回の記事ではfowardメソッドを使ってサーブレットからサーブレットに処理を遷移する方法についてコードを用いながら解説していきます。
挫折せずにプログラミングを学ぶために必要なこと
僕はプログラミングで挫折した経験があります。
それは周りに聞ける人がいなく、一人でエラーと戦っていたからです。
Freeksは月額10,780円という破格の値段で、現役エンジニアに質問する環境を手に入れることができるプログラミングスクールです。
次のような悩みを少しでも抱えていたら、まずは無料カウンセリングを受けてみてください。
申込みは1分でできます。学習する環境にお金を使うというのは良い自己投資になります。
>>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);
}
サンプルプログラム
では実際のサンプルプログラムで確認してみましょう。
今回作成するプログラムは次のような流れで処理を遷移させます。
- servlet-to-servlet.htmlからServlet1を呼び出す
- Servlet1からServlet2を呼び出す
- 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の処理
以上がサーブレットからサーブレットに処理を遷移させる方法でした。
挫折せずにプログラミングを学ぶためには?
挫折せずにプログラミングを学ぶために必要なこと
僕はプログラミングで挫折した経験があります。
それは周りに聞ける人がいなく、一人でエラーと戦っていたからです。
Freeksは月額10,780円という破格の値段で、現役エンジニアに質問する環境を手に入れることができるプログラミングスクールです。
次のような悩みを少しでも抱えていたら、まずは無料カウンセリングを受けてみてください。
申込みは1分でできます。学習する環境にお金を使うというのは良い自己投資になります。
>>Freeksの無料カウンセリングはこちら
【関連記事】Freeks評判、口コミ