サーブレットから別のJavaクラスを利用する

3.2 サーブレットから別のJavaクラスを利用する

 サーブレットはWeb上で動作するJavaプログラムです。そのため、サーブレット内から別に定義されたJavaのクラスを呼び出し利用することもできます。本節では、サーブレットから別のクラスを呼び出すプログラムについて学習します。

サーブレットから別のJavaクラスを呼び出し利用するプログラム

 このプログラムは、アクセスするたびに異なる「四季」を表示するサーブレットです。メインとなる画面を表示させるサーブレットと、動的に文字を変化させるロジックを記述したJavaプログラムの2つのファイルで構成されます。プログラムを作成し、サーブレットから別のJavaクラスを呼び出す方法とweb.xmlの追記方法について学習しましょう。

実行結果

アプリケーション構成

① ソース・フォルダ :web_basic/src/main/java
② パッケージ :ch03
③ 名前 :Season

➢ Season.java
package ch03;

import java.util.Random;

public class Season {

	private static Random random = new Random();

	public String getSeason(){
 		//0から11までのランダムな数字を生成
 		int n = random.nextInt(12);
 
 		//ランダムな数字に対応する季節を返す
 		if(n < 3){
 			return "Winter";
 		}else if(n < 6){
 			return "Spring";
 		}else if(n < 9){
 			return "Summer";
 		}else {
 			return "Autumn";
 		}
 	}
 
 }

① ソース・フォルダ :web_basic/src/main/java
② パッケージ :ch03
③ 名前 :SeasonServlet
④ スーパークラス :jakarta.servlet.http.HttpServlet
⑤ アクセスURL :http://localhost:8080/web_basic/SeasonServlet

➢  SeasonServlet.java
package ch03;

import java.io.IOException;
import java.io.PrintWriter;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/SeasonServlet")
public class SeasonServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
 			throws ServletException, IOException {
 		//自作クラスのオブジェクト化
 		Season objSea = new Season();
 		//季節名の取得
 		String seasonName = objSea.getSeason();
 
 		//画面の出力
 		PrintWriter out = response.getWriter();
 		out.println("Season is " + seasonName);
 	}
 }

解説
 このプログラムで重要なのは、サーブレットから別に定義されたクラスを呼び出し利用していることです。
 SeasonServlet.java について説明します。SeasonServlet.java ファイルでは17行目と19行目でSeason クラスのインスタンスメソッドであるgetSeason()メソッドを呼び出し、季節名を取得しています。
 サーブレット自体はJava プログラムで記述されるため、通常のJavaプログラムと同様に別のクラスを利用することができるのです。
   17:Season objSea = new Season();
   19:String seasonName = objSea.getSeason();

 getSeason()メソッドの中でランダムな数字を生成して季節名を生成するため、アクセスする度に実行結果の画面が変わる仕組みになっています。

図 3.2.1: SeasonServletの実行画面


NEXT>> 3.3 本章のまとめ