プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Spring Framework
  • 【Spring Boot】「Thymeleaf(タイムリーフ)」でビューを作ろう。(Hel…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Spring Boot】「Thymeleaf(タイムリーフ)」でビューを作ろう。(Hello World)

05.19

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Spring Bootでは、「Thymeleaf(タイムリーフ)」というテンプレートエンジンでビューを作るのが推奨されています。

JSPで作らないのか?

JavaでのWeb開発になれている方であれば、誰しもビューといえば、「JSP」というイメージがある方が多いと思います。

しかし、Spring Boot(特に、1.2以降)は、JSPの利用を推奨しておらず、「Thymeleaf」等のテンプレートエンジンを使うことが推奨されています。

「Thymeleaf(タイムリーフ)」でビューを作る。

それでは、実際に、「Thymeleaf」でビューを作っていきましょう。

「Thymeleaf(タイムリーフ)」のインストール

まずは、pom.xmlに対して、下記の記述を追加します。

1
2
3
4
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

これが、「Thymeleaf」の「dependency」にあたります。

「Thymeleaf」でテンプレートファイルを作る。

それでは、ビューの元となるテンプレートファイルを作りましょう。

SpringController.java(コントローラ)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.example.demo;
 
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
public class SpringController {
 
    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("helloworld", "Hello World");
        return "hello";
    }
}

引数のModel

Modelは、コントローラと、ビューの間で値を共有するためのクラスです。

役割としては、JSP/Servletで言えば、セッションと同じですね。

下記のようにモデルに値を設定することで、ビューでその変数を使うことができるようになります。

1
モデルのインスタンス.addAttribute("変数名", "値");

また、メソッドの戻り値でStringの文字列を返していますが、この文字列を「main/resources/templates/(文字列).html」という形で検索します。

hello.html(テンプレート)

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello World!</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p th:text="${helloworld}" />
</body>
</html>

これがテンプレートファイルになります。JSPではなく、HTMLファイルになりましたね。

「main/resources/templates」の下に配置します。

th:text

これは、「Thymeleaf(タイムリーフ)」用の属性です。

pタグに以下のように記述することで、下記の変換が行われます。

1
<p th:text="${helloworld}" />

↓↓↓

1
<p>コントローラから受ける変数</p>

実行結果

ModelAndViewでソースを書き直す。

先ほどのサンプルでは、Modelを使って、コントローラとビューで値を共有しました。

今度は、ModelAndViewというクラスを使っても同じように実装できるのでご紹介します。

HTMLテンプレート部分は同じで、コントローラだけ下記のように書き換えます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.example.demo;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class SpringController {
 
    @RequestMapping("/hello")
    public ModelAndView hello(ModelAndView mav) {
     mav.setViewName("hello");
     mav.addObject("helloworld", "Hello World!(ModelAndViewより)");
        return mav;
    }
}

setViewNameメソッド

ここに入れた値が、「main/resources/templates/(文字列).html」で探しに行く文字列に該当します。

addObjectメソッド

これで、コントローラとビューで共有する変数を設定します。

Modelと同じように書くのであっても、ModelAndViewで書いたほうが、メソッドの構造としてはスッキリしますよね。

実行結果

スポンサーリンク
  • 2018 05.19
  • miyabisan2
  • コメントを書く
  • Spring Framework
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 05.20

    【Spring MVC】プロジェクトの作成及び、アプリの起動まで。

  2. 2018 05.06

    【Spring Framework】Spring MVCとは?

  3. 2018 05.13

    【Spring Framework】AOP(アスペクト指向プログラミング)を「AspectJ」で実装してみる。

  4. 2018 05.06

    【Spring Framework】Springによる開発を始めよう(STSのインストール~「Hello World」まで)

  5. 2018 05.19

    【Spring Boot】STSでSpring Bootプロジェクトを作ってみよう。

  6. 2018 05.06

    【Spring Framework】10年以上に渡る歴史や、関連プロジェクトについて。

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Spring Boot】STSでSpring Boo…

【Spring Boot】SpringBootの基本、…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー