Javaその他

JavaEEのプロジェクトを作成しThymeleafを使って画面表示してみた

JavaEEでは、JSF(JavaServer Faces)というJavaベースのWebアプリケーションフレームワークを用いて画面表示を行うことが多いが、JSFの代わりにThymeleafというテンプレートエンジンを用いることもできる。

今回は、JavaEEのプロジェクトを作成し、Thymeleafによる画面表示を行ってみたので、その手順やサンプルプログラムを共有する。

前提条件

下記記事の環境構築が完了していること。

Eclipse上にJavaEEの開発環境を構築してみたJavaEEとは、正式名称を「Java Platform, Enterprise Edition」といい、企業向けのWebアプリケーショ...



やってみたこと

  1. 動的Webプロジェクトの作成
  2. JavaEEのプロジェクトで必要なライブラリの配置
  3. サンプルプログラムの作成
  4. サンプルプログラムの実行

動的Webプロジェクトの作成

JavaEEのプロジェクトの作成は、動的Webプロジェクトを作成後、必要なライブラリを追加することによって行う。その手順は以下の通り。

1) パッケージ・エクスプローラー上で右クリックし、「新規」メニューから「その他」を選択する。
動的Webプロジェクトの作成_1

2) Webメニューの「動的Webプロジェクト」を選択し、「次へ」ボタンを押下する。
動的Webプロジェクトの作成_2

3) プロジェクト名を入力し、ターゲット・ランタイムにGlassFishを選択した状態で、「次へ」ボタンを押下する。
動的Webプロジェクトの作成_3

4) そのまま、「次へ」ボタンを押下する。
動的Webプロジェクトの作成_4

5) 「web.xml デプロイメント記述子の生成」にチェックを入れ、「完了」ボタンを押下する。
動的Webプロジェクトの作成_5

6) 作成されたdemoプロジェクトの構成は、以下の通り。
動的Webプロジェクトの作成_6



JavaEEのプロジェクトで必要なライブラリの配置

作成した動的Webプロジェクトを、JavaEEプロジェクトとして動作させるには、以下のjarファイルが必要である。

  • disruptor-3.3.2.jar
  • javax.mvc-api-1.0-edr2.jar
  • log4j-api-2.4.jar
  • log4j-core-2.4.jar
  • log4j-slf4j-impl-2.4.jar
  • ognl-3.1.jar
  • ozark-1.0.0-m02.jar
  • ozark-thymeleaf-1.0.0-m02.jar
  • slf4j-api-1.7.12.jar
  • thymeleaf-2.1.4.RELEASE.jar
  • unbescape-1.1.0.RELEASE.jar

例えば、「distruptor-3.3.2.jar」は、以下のURLの「jar」リンクを押下することで取得できる。
https://mvnrepository.com/artifact/com.lmax/disruptor/3.3.2

JavaEEのプロジェクトで必要なライブラリの配置_1

また、取得したライブラリは全て、以下のように、WebContent/WEB-INF/lib下にコピーして貼り付ける。
JavaEEのプロジェクトで必要なライブラリの配置_2



サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、今回追加・変更したプログラムである。

アプリケーション定義クラスの内容は以下の通りで、アプリケーションのルートパスを指定している。

また、コントローラクラスの内容は以下の通りで、indexメソッドでメッセージを設定し、初期表示画面に遷移するようになっている。

さらに、Thymeleafをテンプレートエンジンに設定するクラスの内容は以下の通り。

また、初期表示画面の内容は以下の通りで、Spring Bootのときと同じような内容を記載している。

さらに、beans.xmlの内容は以下の通りで、「bean-discovery-mode=”all”」の設定を追加している。

その他、動的Webプロジェクトを作成時と同じ内容であるが、glassfish-web.xml、web.xmlの内容はそれぞれ以下の通り。



サンプルプログラムの実行

サンプルプログラムの実行結果は、以下の通り。

1) demoプロジェクトをサーバーに追加するために、サーバービューのGlassFishサーバーを選択し右クリックし、「追加および除去」を選択する。
サンプルプログラムの実行結果_1

2) demoプロジェクトを選択した状態で「追加」ボタンを押下する。
サンプルプログラムの実行結果_2

3) 「構成済み」欄にdemoプロジェクトが移動するので、「完了」ボタンを押下する。
サンプルプログラムの実行結果_3

4) 以下のように、GlassFishサーバーにdemoプロジェクトが追加されていることが確認できる。
サンプルプログラムの実行結果_4

5) GlassFishサーバーを選択し右クリックし、「開始」を選択する。
サンプルプログラムの実行結果_5

6) GlassFishサーバーが起動すると、以下のように、サーバーのステータスが「始動済み、同期済み」に変更される。
サンプルプログラムの実行結果_6

7) Webブラウザ上で「http:// (ホスト名):(ポート番号)/(Webアプリケーションの表示名)/(アプリケーションのルートパス)/(コントローラクラスパス)/(コントローラメソッドパス)」とアクセスすると、下記画面(index.html)が表示されることが確認できる。
サンプルプログラムの実行結果_7
なお、(Webアプリケーションの表示名)はweb.xmlで、(アプリケーションのルートパス)はDemoApplication.javaで、それぞれ指定している。

要点まとめ

  • JavaEEのプロジェクトの作成は、動的Webプロジェクトを作成後、必要なライブラリを追加することによって行う。
  • アプリケーションのルートパスは、「javax.ws.rs.core.Application」クラスのサブクラスで定義する。
  • コントローラクラスで、画面遷移に必要なパス指定等を行う。
  • Thymeleafをテンプレートエンジンに利用する定義は、ViewEngineBaseクラスのサブクラスで行う。
  • 全てのクラスをCDIでインジェクションさせる対象とするには、beans.xmlで「bean-discovery-mode=”all”」を指定する。