Submit Search
SpringBootにおけるテンプレートエンジンの活用
1 like
822 views
iPride Co., Ltd.
2022/05/12の勉強会で発表されたものです。
Technology
Read more
1 of 25
Download now
Download to read offline
1
2
3
4
5
6
Most read
7
8
9
10
11
Most read
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Most read
More Related Content
PDF
SpringBootによるDB更新
iPride Co., Ltd.
PDF
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
PDF
Springを何となく使ってる人が抑えるべきポイント
土岐 孝平
PDF
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
PDF
Atomic Architecture
Yoshitaka Kawashima
PDF
Vue.js で XSS
tobaru_yuta
PDF
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
PDF
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
SpringBootによるDB更新
iPride Co., Ltd.
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
Springを何となく使ってる人が抑えるべきポイント
土岐 孝平
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
Atomic Architecture
Yoshitaka Kawashima
Vue.js で XSS
tobaru_yuta
これからSpringを使う開発者が知っておくべきこと
土岐 孝平
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
What's hot
(20)
ODP
SPAのルーティングの話
ushiboy
PDF
Agility@Scale(アジャイル開発のスケールアップ)を実現する14のベストプラクティス
SORACOM, INC
PDF
Pythonによる黒魔術入門
大樹 小倉
PDF
こわくない Git
Kota Saito
PDF
モデリングもしないでアジャイルとは何事だ
Iwao Harada
PDF
高速にコンテナを起動できるイメージフォーマット
Akihiro Suda
PDF
Railsで作るBFFの功罪
Recruit Lifestyle Co., Ltd.
PDF
DBスキーマもバージョン管理したい!
kwatch
PDF
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
Shuji Kikuchi
PDF
PostgreSQLアンチパターン
Soudai Sone
PPTX
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
PDF
[AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
de:code 2017
PPTX
Docker Tokyo
cyberblack28 Ichikawa
PDF
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
PDF
jQuery - Chapter 3 - Effects
WebStackAcademy
PDF
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
PDF
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
matsu_chara
PDF
SpringBootTest入門
Yahoo!デベロッパーネットワーク
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
PDF
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
SPAのルーティングの話
ushiboy
Agility@Scale(アジャイル開発のスケールアップ)を実現する14のベストプラクティス
SORACOM, INC
Pythonによる黒魔術入門
大樹 小倉
こわくない Git
Kota Saito
モデリングもしないでアジャイルとは何事だ
Iwao Harada
高速にコンテナを起動できるイメージフォーマット
Akihiro Suda
Railsで作るBFFの功罪
Recruit Lifestyle Co., Ltd.
DBスキーマもバージョン管理したい!
kwatch
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
Shuji Kikuchi
PostgreSQLアンチパターン
Soudai Sone
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
[AC05] マイクロサービスは分割がキモ!基幹システムのためのドメイン駆動設計
de:code 2017
Docker Tokyo
cyberblack28 Ichikawa
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
jQuery - Chapter 3 - Effects
WebStackAcademy
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
Kafkaを使った マイクロサービス基盤 part2 +運用して起きたトラブル集
matsu_chara
SpringBootTest入門
Yahoo!デベロッパーネットワーク
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
Ad
Similar to SpringBootにおけるテンプレートエンジンの活用
(20)
PDF
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
PDF
10分でわかるFuelPHP @ 2011/12
kenjis
PDF
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
PPTX
エンタープライズ分野での実践AngularJS
Ayumi Goto
PDF
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Shotaro Suzuki
PDF
アップルのテンプレートは有害と考えられる
Brian Gesiak
PPT
Gen-Template-for-Perl
nasneg
PDF
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
PDF
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
PPTX
【プログラミング教室】テキスト
Manabu Ikarashi
PDF
Angular2 rc.1 unit testing overview
Mitsuru Ogawa
PPT
Code Igniterについて
Keita Ojima
PDF
20091030cakephphandson 01
Yusuke Ando
PPTX
Building Silverlight Large Scale Application Using MVVM
Shotaro Suzuki
PDF
Google App Engineでできる、あんなこと/こんなこと
a-know
PPT
Yapc::Asia 2011 rejectConf Slide
Seiji Ohira
PPTX
AngularJS入門
Kenji Shirane
PDF
Template Meta Programming入門から応用まで
yoshihikoozaki5
PDF
Vue入門
Takeo Noda
PDF
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門
Hirokazu Nishi
10分でわかるFuelPHP @ 2013/04 FuelPHP入門ハンズオン vol.1
kenjis
10分でわかるFuelPHP @ 2011/12
kenjis
10分でわかるFuelPHP @ 2012/05 OSC2012 Nagoya
kenjis
エンタープライズ分野での実践AngularJS
Ayumi Goto
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Shotaro Suzuki
アップルのテンプレートは有害と考えられる
Brian Gesiak
Gen-Template-for-Perl
nasneg
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
【プログラミング教室】テキスト
Manabu Ikarashi
Angular2 rc.1 unit testing overview
Mitsuru Ogawa
Code Igniterについて
Keita Ojima
20091030cakephphandson 01
Yusuke Ando
Building Silverlight Large Scale Application Using MVVM
Shotaro Suzuki
Google App Engineでできる、あんなこと/こんなこと
a-know
Yapc::Asia 2011 rejectConf Slide
Seiji Ohira
AngularJS入門
Kenji Shirane
Template Meta Programming入門から応用まで
yoshihikoozaki5
Vue入門
Takeo Noda
第1回 Magento Cafe Plus Kansai ~ Magentoカスタマイズ入門
Hirokazu Nishi
Ad
More from iPride Co., Ltd.
(20)
PPTX
Devcontainerのススメ(1)-Devcontainerとはどういう技術?-
iPride Co., Ltd.
PPTX
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
PPTX
色について.pptx .
iPride Co., Ltd.
PPTX
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
PPTX
やってみた!OpenAI Function Calling 入門 .
iPride Co., Ltd.
PPTX
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
iPride Co., Ltd.
PDF
Drupal10 Theme Starterkit入門.pdf .
iPride Co., Ltd.
PDF
サイクリングはいいぞ .
iPride Co., Ltd.
PDF
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
iPride Co., Ltd.
PDF
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
iPride Co., Ltd.
PPTX
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
iPride Co., Ltd.
PPTX
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
iPride Co., Ltd.
PPTX
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
iPride Co., Ltd.
PPTX
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
iPride Co., Ltd.
PPTX
AWSの勉強リージョン編 2024/09/27の勉強会で発表されたものです。
iPride Co., Ltd.
PPTX
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
iPride Co., Ltd.
PPTX
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
iPride Co., Ltd.
PPTX
AWSとIPv6 2時間目 2024/09/06の勉強会で発表されたものです。
iPride Co., Ltd.
PPTX
AWSとIPv6 2024/08/30の勉強会で発表されたものです。
iPride Co., Ltd.
PPTX
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
Devcontainerのススメ(1)-Devcontainerとはどういう技術?-
iPride Co., Ltd.
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
iPride Co., Ltd.
色について.pptx .
iPride Co., Ltd.
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
iPride Co., Ltd.
やってみた!OpenAI Function Calling 入門 .
iPride Co., Ltd.
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
iPride Co., Ltd.
Drupal10 Theme Starterkit入門.pdf .
iPride Co., Ltd.
サイクリングはいいぞ .
iPride Co., Ltd.
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
iPride Co., Ltd.
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
iPride Co., Ltd.
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
iPride Co., Ltd.
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
iPride Co., Ltd.
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
iPride Co., Ltd.
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
iPride Co., Ltd.
AWSの勉強リージョン編 2024/09/27の勉強会で発表されたものです。
iPride Co., Ltd.
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
iPride Co., Ltd.
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
iPride Co., Ltd.
AWSとIPv6 2時間目 2024/09/06の勉強会で発表されたものです。
iPride Co., Ltd.
AWSとIPv6 2024/08/30の勉強会で発表されたものです。
iPride Co., Ltd.
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
SpringBootにおけるテンプレートエンジンの活用
1.
2023.5.12 Xiao SpringBootにおける テンプレートエンジンの活用 ー Thymeleafの基本的な使い方
ー
2.
目次 • まえがき • テンプレートエンジンとは •
テンプレートエンジン Thymeleaf の基本的な使い方 • まとめ
3.
まえがき • 今回の発表資料の参考文献 ・掌田津耶乃 「SpringBoot3
プログラミング入門」 秀和システム(2023) 第3章「テンプレートエンジンの活用」より、 3-1「Thymeleafテンプレートエンジン」の内容を取り上げる。 ※ 第3章「テンプレートエンジンの活用」には、Thymeleafの他に、 Mustache, Groovy templates の内容もあるが、 今回の発表では、Thymeleafのみの説明とする。
4.
テンプレートエンジンとは SpringBootにおけるMVCモデル • SpringBootのWebアプリケーションでは、「MVCモデル」をベースに設計されている。 <MVCモデル> クライアント Controller Model View データベース Controller
: 全体の処理の制御を行うもの Model: アプリケーションで使うデータを管理するもの View: 画面の表示を扱うもの
5.
テンプレートエンジンとは SpringBootにおけるMVCモデル • テンプレートエンジン: MVCモデルの中の
”View” の部分を担当するもの。 • テンプレートとなるテキスト(HTML etc..)を元に、データを組み込んでWebページを生成する。 • テキストのコードを出力するだけでなく、値や式を埋め込んで、実行時に演算処理して画面に表示す ることもできる。 • テンプレートエンジンには種類がある。(Thymeleaf, Groovy templates etc..) • Thymeleaf:JavaのWebアプリケーション開発での利用を前提に開発されているテンプレートエンジン。
6.
Thymeleafの基本的な使い方 値の受け渡し(テンプレート側の書き方) • テンプレート内に変数を埋め込んでおき、コントローラ側で必要な値を渡して表示させる。 <〇〇 th:text=“値”> 例1)テンプレートHTMLの<body>内 <body
class="container"> <h1 class="display-4 mb-4">Hello page</h1> <p class="h6 alert alert-primary" th:text="${msg}"></p> </body> ${ 変数名 } → 変数を埋め込む時の基本的な書き方
7.
Thymeleafの基本的な使い方 値の受け渡し(コントローラ側の書き方) 例1)コントローラ側(Modelの利用) @Controller public class EventschedulerController
{ @RequestMapping("/") public String index(Model model) { model.addAttribute("msg", “This is a sample message.”); return "index"; } } ※ indexメソッドの引数 Model → 後ほど説明 ・値にコメントを入れる場合
8.
Thymeleafの基本的な使い方 値の受け渡し(画面表示) 例1)画面表示 ※受け渡した値 ”This is
a sample message.” が表示される。
9.
Thymeleafの基本的な使い方 値の受け渡し(コントローラ側の書き方) 例2)コントローラ側(Modelの利用) @Controller public class EventschedulerController
{ @RequestMapping("/{num}") public String index(@PathVariable int num, Model model) { int res = 0; for(int i = 1; i <= num; i++) { res += i; } model.addAttribute("msg", "total: " + res); return "index"; } } ・値にパラメータ変数を入れる場合
10.
Thymeleafの基本的な使い方 値の受け渡し(画面表示) 例2)画面表示 ※受け渡した値 ”total” +
res が表示される。 /22 → num = 22; int res = 0; for(int i = 1; i <= num; i++) { res += i; }
11.
Thymeleafの基本的な使い方 値の受け渡し(コントローラ側の書き方) 例3)コントローラ側(ModelAndViewの利用) @Controller public class EventschedulerController
{ @RequestMapping("/{num}") public ModelAndView index(@PathVariable int num, ModelAndView mav) { int res = 0; for(int i = 1; i <= num; i++) { res += i; } mav.addObject("msg", "total: " + res); mav.setViewName("index"); return mav; } } ・例2のindexメソッドの引数をModel → ModelAndViewに書き換える。
12.
Thymeleafの基本的な使い方 値の受け渡し(画面表示) 例3)画面表示 ・Modelを使った時と結果は同じ。
13.
Thymeleafの基本的な使い方 値の受け渡し(ModelとModelAndView) ・ModelとModelAndViewの違い @Controller //<省略> model.addAttribute("msg", "total: "
+ res); return “index"; } } ・Model ・ModelAndView @Controller //<省略> mav.addObject("msg", "total: " + res); mav.setViewName("index"); return mav; } } Model →テンプレート側に渡す情報をまとめて管理する。 (今回は変数msgのみである。) 実際に表示するテンプレートは、 returnで名前を返すことで指定する。 ModelAndView →使用するテンプレートとそこで使われるデータを、 まとめて一つの戻り値で返すことができる。
14.
Thymeleafの基本的な使い方 フォームを利用する • クライアント側で入力した値を受け渡す。(form) 例4)テンプレートHTMLの<body>内 <body class="container"> <h1
class="display-4 mb-4">Hello page</h1> <p th:text="${msg}"></p> <div class="h6 alert alert-primary"> <form method="post" action="."> <div class="input-group"> <input type="text" class="form-control me-1" name="text1" th:value="${value}" /> <span class="input-group-btn"> <input type="submit" class="btn btn-primary px-4" value="Click" /> </span> </div> </form> </div> </body>
15.
Thymeleafの基本的な使い方 フォームを利用する 例4)コントローラ側(ModelAndView) @Controller public class EventschedulerController
{ @RequestMapping(value="/", method=RequestMethod.GET) public ModelAndView index(ModelAndView mav) { mav.addObject("msg", "Fill in your name, please."); mav.setViewName("index"); return mav; } @RequestMapping(value="/", method=RequestMethod.POST) public ModelAndView form(@RequestParam("text1") String str, ModelAndView mav) { mav.addObject("msg", "Hi," + str +"!!"); mav.addObject("value", str); mav.setViewName("index"); return mav; } } HTTPメソッド → アクセスの方法をメソッドとして用意している。 GET : 指定したURLにブラウザなどでアクセスした時。 POST : フォームに入力した内容などが送られてくる。 ※@RequestMapping(method=〇〇)と記載している。 ↓ GET : @GetMapping(“/”) POST : @PostMapping(“/”) *このように簡単に書くこともできる。
16.
Thymeleafの基本的な使い方 フォームを利用する(画面表示) 例4)画面表示 入力フォームに ”John Doe”と入力してClick
17.
Thymeleafの基本的な使い方 ページの利用(フォワードとリダイレクト) • あるアドレスにアクセスしたとき、必要に応じて別のアドレスに移動させたい場合に利用される。 • フォワード:サーバー内部で別のページを読み込み表示するもの。 •
リダイレクト:クライアント側に送られた後で別のページに移動させるもの。 アクセスしているアドレスそのものも移動先のものに変更される。 例5)テンプレートHTMLの<body>内 (例1と同じ) <body class="container"> <h1 class="display-4 mb-4">Hello page</h1> <p class="h6 alert alert-primary" th:text="${msg}"></p> </body>
18.
Thymeleafの基本的な使い方 フォームを利用する 例5)コントローラ側(ModelAndView) @Controller public class eventManageController
{ @RequestMapping(value="/", method=RequestMethod.GET) public ModelAndView index(ModelAndView mav) { mav.addObject("msg", "This is /index page."); mav.setViewName("index"); return mav; } @RequestMapping("/home") public String home() { return "forward:/"; } @RequestMapping("/other") public String other() { return "redirect:/"; } } http://localhost:8080/home でアクセス →フォワード http://localhost:8080/other でアクセス →リダイレクト
19.
Thymeleafの基本的な使い方 画面表示 例5)画面表示 ・http://localhost:8080 でアクセス http://localhost:8080/other でアクセス ・http://localhost:8080/home
でアクセス ・http://localhost:8080/other でアクセス後 forward redirect
20.
Thymeleafの基本的な使い方 • Thymeleafには、「値を受け渡して、その値を表示する( th:text
)」という機能の他にも様々 な機能がある。 • 条件処理 th:if / th:unless • 繰り返し処理 th:each • スイッチ処理 th:switch * 書き方と表示例を次ページより簡単に説明する。
21.
Thymeleafの基本的な使い方 条件処理 th:if /
th:unless • 条件による表示:「その要素を表示するかどうか。」を示す属性が用意されている。 ・ <〇〇 th:if=“${ 値 }”> :値が真だと表示 ・ <〇〇 th:unless=“${ 値 }”> :値が偽だと表示 例)アクセスするごとに表示が変わるサンプル ・boolean変数を用意 boolean fl ag = false; ・アクセスするごとに切り替え fl ag = ! fl ag 真の表示 偽の表示
22.
Thymeleafの基本的な使い方 繰り返し処理 th:each • ${
コレクション }に複数の値を保管する。コレクションから値を順に取り出して変数に代入。 要素内に記述された内容を出力。 例)コレクションに指定した3つの値を 繰り返し表示させるサンプル ・コントローラ側 String[] data = new String[] {“a”, “bb”, “ccc”}; ・テンプレート側 ・ <〇〇 th:each=“変数名 : ${ コレクション }”> …繰り返す表示内容… <〇〇> <ul th:each="item:${data}"> <li th:text="${item}"></li> </ul>
23.
Thymeleafの基本的な使い方 スイッチ処理 th:switch • 値に応じて表示を切り替える。
例)パラメータ変数を用意し、その値に応じて表示する。 ・テンプレート側 ・ <〇〇 th:switch=“${ 変数 }”> <△△ th:case=“ 値1 ”> <△△ th:case=“ 値1 ”> <〇〇> <div th:switch="${number}"> <p th:case="1" th:text="One"></p> <p th:case="2" th:text="Two"></p> <p th:case="3" th:text="Three"></p> </div> …
24.
まとめ • テンプレートエンジン Thymeleaf
の基本的な使い方(テンプレート・コント ローラの書き方)について取り上げた。 • Thymeleafには取り上げた他にも、多くの機能が搭載されている。 • ${ }による変数の埋め込みさえ抑えれば、基本的なWebページの作成はでき る。
25.
ご清聴ありがとうございました。
Download