【第3回】AWS EC2にNginx+Tomcat+CorrettoでJava11環境を作る


この連載ではAWSのEC2を使ってJavaのWebアプリ環境を数回に渡って作成していきます。

作成する環境は以下の通りです。
EC2 : Amazon Linux 2
nginx : 1.12.2
Tomcat : 9.0.24
jdk : 11.0.4 (Corretto11)

前回まででEC2上にJava11およびNginx+TomcatのWebサーバ環境を構築しました。
今回はサーバーで実行確認をするための、簡単なサーブレットプログラムを作成しましょう。
なお、プログラムの作成にはEclipseを使用します。
(パースペクティブは Java EE を使用しています。)


■1. プロジェクトの作成

まずはプロジェクトを作成します。
「ファイル」→「新規」→「その他」をクリックしてウィザードを立ち上げたら、
「Web」→「動的webプロジェクト」を選択して「次へ」をクリックしましょう。

プロジェクト名は「ServletSample」とします。
ターゲット・ランタイムは「Tomcat9 (Java11)」を選択して「次へ」をクリックしましょう。

さらに「次へ」をクリックして、最後の画面で「web.xmlデプロイメント記述子の生成」にチェックを入れて
「完了」をクリックしましょう。

■2. ローカルサーバーの作成

作成したプログラムを動かすためのローカルサーバーを用意します。
「ファイル」→「新規」→「その他」をクリックしてウィザードを立ち上げたら、
「サーバー」→「サーバー」を選択して「次へ」をクリックしましょう。

サーバーのタイプで「Tomcat v9.0 サーバー」を選択したら「完了」をクリックします。

続けてサーバーに、先ほど作成したプロジェクトを追加します。
「サーバー」タブを表示して、右クリック→「追加および除去」をクリックしましょう。

「ServletSample」を選択して「追加」をクリックし、構成済みの一覧に移動できたら「完了」をクリックします。

これでサーバーの作成とプロジェクトの登録ができました。
あとは実際にプログラムを作成して実行してみましょう。

■3. JSPファイルの用意

サーブレットとJSPファイルを作成していきます。
JSPファイルは「index.jsp」と「result.jsp」を用意し、それぞれ以下の用途で使用します。
・index.jsp ⇒ 足し算の入力フォームを用意する。
・result.jsp ⇒ index.jspで入力された2つの値を足した結果を表示する。

プロジェクト・エクスプローラーでServletSampleを開き、「WebContent」→「WEB-INF」の下に「views」フォルダを作成します。

さらにその中に「index.jsp」と「result.jsp」を作成します。
作成はviewsフォルダを右クリック →「新規」→「JSPファイル」から行いましょう。
ウィザードが開いたら、ファイル名だけ入力して「完了」から保存します。

同じようにresult.jspを作成して、以下の様になっていればいいです。

■4. index.jspの作成

先ほど作成したindex.jspの中を以下の様に記述してください。

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ServletSample | トップページ</title>
</head>
<body>
	<form method="post" action="./Sample">
		<input type="number" name="x"> + <input type="number" name="y">
		=
		<button type="submit">計算</button>
	</form>
</body>
</html>

変更したのはtitleタグの中身と、bodyの中に配置したform関連の箇所です。

■5. Sampleクラス、doGetメソッドの作成

次にサーブレットのプログラムを作成します。
プロジェクト・エクスプローラーでServletSampleを右クリックし、「新規」→「サーブレット」をクリックしましょう。
ウィザードが開いたら、クラス名に「Sample」を入力して「完了」をクリックしてください。
(パッケージ名は今回は空にしています。)

「Javaリソース」→「src」→「(デフォルト・パッケージ)」に「Sample.java」が作成されます。

中身を開いて、エディタウィンドウで以下の様にdoGetメソッドの中身を書き換えましょう。

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String path = "/WEB-INF/views/index.jsp";
		RequestDispatcher disp = request.getRequestDispatcher(path);

		disp.forward(request, response);
	}

このプログラムを実行したときに先ほど作成したindex.jspが表示されるかを確認します。
実行ボタンの横の「▼」をクリックして、「実行」→「サーバーで実行」をクリックしましょう。

サーバーを選択する画面が表示されるので、作成したTmocat9サーバーを選択して「完了」しましょう。

Eclipseの内臓ブラウザで以下のようなページが表示されていればOKです。
(ブラウザで「http://localhost:8080/ServletSample/Sample」にアクセスして確認してもOKです。)

■6. Sampleクラス、doPostメソッドの作成

次にindex.jspで「計算」ボタンがクリックされた際の処理、doPostメソッドを作成します。
doPostメソッドにはフォームで入力された「x」と「y」の値を足し算して、
result.jspに受け渡す処理を以下の通り記述しましょう。

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String x = request.getParameter("x");
		String y = request.getParameter("y");

		int result = Integer.parseInt(x) + Integer.parseInt(y);

		request.setAttribute("result", result);

		String path = "/WEB-INF/views/result.jsp";
		RequestDispatcher disp = request.getRequestDispatcher(path);

		disp.forward(request, response);
	}

■7. result.jspの作成

手順3.で用意した、result.jspの中身を記述していきましょう。
以下の様に、手順6.で処理した計算結果(resultの値)を表示する画面にします。

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ServletSample | リザルトページ</title>
</head>
<body>
	<p>
		計算結果:<%=request.getAttribute("result")%>
	</p>
	
	<a href="./Sample">戻る</a>
</body>
</html>

記述ができたら、Tomcatを再起動(再度「実行」→「サーバーで実行」)してプログラムの変更を反映し、
「http://localhost:8080/ServletSample/Sample」にアクセスしましょう。
index.jspが表示されるので、フォームに適当な数値を入力して「計算」をクリックしてください。

以下の様に計算結果が表示されていれば完成です。


今回は完全にJavaの内容となってしまいましたが、第1回、第2回で作成したEC2サーバーで実行するためのプログラムが完成しました。
次回(最終回)は作成したプログラムをアップロードして、サーバーでの実行確認をしたいと思います。

  • このエントリーをはてなブックマークに追加

PAGE TOP