ControllerとThymeleafの作成
前置き
少し前に勉強し始めたJavaに関するメモです。
本日のお題はControllerとThymeleafです。
フレームワークとしては、Spring Bootを使用しています。
概略〜Thymeleafとは
Controllerは他の言語でもよく出てきますがThymeleafという単語は自分にとっても初めてだったので念の為。
Thymeleafは、Spring Bootで用いられるテンプレートエンジンですね。
Railsでいうerb, Laravelならbladeです。
これらとの違いは、拡張子がなんの変哲もない.htmlになるということですね。
その代わりに、htmlタグに属性を付与してThymeleafであることを明示します(後述)。
詳細〜Thymeleafについて
Thymeleafファイルの配置
Thymeleafファイルは、以下の箇所に配置します。
src/main/resources/templates(templatesディレクトリまではデフォルトで用意されています。)
このtemplatesディレクトリの中に、好きなファイル名でThymeleafファイルを作成します。
今回は、Hello Worldを表示するための"hello.html"を作成します。
Thymeleaf内の記述
中身の記述についてですが、通常のhtmlファイルと変わるところは2点あります。
1点目は、htmlタグの書き方、2点目は、Javaのコードの埋め込み方です。
まず1点目のhtmlタグの書き方ですが、以下のように記述します。
これは、このhtmlファイルをThymeleafとして利用できるようにするためのものですね。
<html xmlns:th="http//www.thymeleaf.org">
次に、Javaのコードの埋め込み方についてです。
他のテンプレートエンジン同様に、ThymeleafでもJavaのコードを埋め込むための方法が用意されています。
<p th:text=${ message }></p>
他にもいくつか方法がありますが、基本形はこのやり方になります。
Controllerについて
Thymeleafが終わったので、次はControllerを見ていきます。
ファイルの配置
今回はHelloControllerを作成するので、まずhelloディレクトリとその中にHelloController.javaを作成します。
そして、それらをsrc/main/java/com/example/xxxディレクトリの中に移動します(xxxにはプロジェクト名が入ります)。
ファイル内の記述
次に、HelloControllerファイルに以下のように記述します。
package com.example.xxx.hello;
// comディレクトリからhelloディレクトリまでのパスを明記
import org.springframework.stereotype.Controller;
// Controllerアノテーション(後述)を利用するための記述
import org.springframework.bind.annotation.GetMapping;
// GetMapping アノテーション(同じく後述)を利用するための記述
@Controller
public class HelloController{
@GetMapping("/hello")
public String getHello (){
return "hello";
}
}
解説
- @Controller
コントローラアノテーションと呼ばれます。
この後に定義されたクラスはコントローラとして扱われます。 - @GetMapping("/hello")
GetMappingアノテーションと呼ばれます。
他のフレームワークでいうところのルーティングの役割をするものです。
localhost:8080/helloにgetメソッドでアクセスした場合には、このアノテーションの後に定義されているアクションが呼び出されます。 - public String getHello(){ ~ }
HelloControllerクラスのgetHelloアクションを定義しています。
Thymleafファイルは全て文字列の扱いなので、関数とともに宣言する戻り値の型はStringになります。 - return "hello";
アクションが呼び出された際に返却するThymeleafファイルを、templatesディレクトリからの相対パスで表示します。
上記の記述で、hello.htmlが表示されます。