0
0

More than 1 year has passed since last update.

Servlet と Service ざっくりまとめ

Last updated at Posted at 2022-10-11

Java の Servlet , Service を使った Web App 開発のはなし
ServletService の関係をざっくりまとめる
細かいことは気にしない!!いったんは流れが分かればOK!!!!
説明で使ってるサンプルプロジェクトは GitHub java-webapp-clump にあります
Servlet が呼ばれるまでの流れは JSP と Servlet ざっくりまとめ を見てください

image.png

Servlet, Service の役割

  • Servlet
    画面(ブラウザ)から呼ばれて処理を呼ぶやつ
    表示する画面決める・入力を受け取る・処理を呼び出す・処理結果を設定する
  • Service
    処理をおこなうやつ
    入力(引数)もらって処理して結果(戻り値)かえす

Servlet と Service のつながり

ざっくりした流れ

  1. ServletService をクラスのインスタンス変数として持ってる
  2. Servlet が ブラウザから実行される
  3. Servlet が 入力を受け取って Service の処理(メソッド)を実行して結果を受け取る
  4. Servlet が 結果を設定してJSPを返してブラウザに表示

あとは 2~4 を繰り返す。

Servlet の Service の持ち方

ServletService をクラスのインスタンス変数として持ってる
サンプルプロジェクトでは簡易な方法にしてるが興味ある方は DI(Dependency Injection)コンテナ を FW だったりで使った方が楽かも

RetroMethodServlet.java
public class RetroMethodServlet extends HttpServlet {

	private RetroMethodService service = new RetroMethodService();

    // ・・・

}

Servlet から Service を実行

入力を受け取ってそれを引数に処理することが多いので ServletdoPost メソッドで Service を実行している
ただ入力が必要ない時とかは doGet メソッドだったりどこから実行してもOK
Servlet から Service を呼び出すときに気にするところは...メソッドの使い方くらい!!!

  • メソッド宣言の見方
    • 修飾子 戻り値型 メソッド名 ( 引数型 引数の変数名, ...)
    • 例: public String work1 ( int input1 , int input2, int input3 )
  • メソッドの気にするところ
    • 呼び出しと宣言のメソッド名あわせる
    • メソッドの引数の型と個数を合わせる
    • メソッドの戻り値の型を合わせる
    • 戻り値あるとき(void以外)は return が必ず必要になる

image.png

Servlet の入力値の取得

入力を取得してるところ
request.getParameter( キー名 ) を使って取得

RetroMethodServlet.java
    // 次の3行が 入力値を取得してる箇所
	int input1 = Integer.parseInt(request.getParameter("input11"));
	int input2 = Integer.parseInt(request.getParameter("input12"));
	int input3 = Integer.parseInt(request.getParameter("input13"));
    // 次の行が service のメソッド呼び出し
	int result = service.work1(input1, input2, input3);

Servlet の結果の設定

結果を設定してるところ
request.setAttribute( キー名 , 結果の値 ) を使って設定

RetroMethodServlet.java
    // 次の行が service のメソッド呼び出し
	int result = service.work1(input1, input2, input3);
    // 次の行が 結果を設定してる箇所
    request.setAttribute("result1", result);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0