SpringBootはThymeleafを統合します
Thymeleafの紹介
- 1. Thymeleafは、VelocityやFreeMarkerに似たテンプレートエンジンであり、JSPを完全に置き換えることができます。他のテンプレートエンジンと比較して、次の3つの非常に魅力的な機能があります
- 2. Thymeleafは、ネットワーク環境と非ネットワーク環境の両方で実行できます。つまり、アーティストはブラウザーでページの静的効果を表示でき、プログラマーはサーバー上のデータを使用して動的ページ効果を表示できます。
- 3.Thymeleafの機能はすぐに使用できます。標準とSpring標準の2つの方言を提供し、テンプレートを直接適用してJSTLとOGNLの式効果を実現し、テンプレートの設定、JSTLの変更、タグの毎日の変更の手間を省きます。同時に、開発者はカスタム方言を拡張および作成することもできます。
もちろん、Spring Bootページには、次のような多数のテンプレートが用意されています。
- 1.FreeMarker
- 2.Groovy
- 3.口ひげ
- 4. Thymeleafの ユーザーがほとんどです
- 5.速度
- 6. Beetlの 国内クレームは上記の10倍高速ですが、Beetlを使用してpom.xmlファイルに追加する人は誰もいません。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
# 添加nekohtml的目的:为了非严格遵守w3c编程规范
# 比如 <input /> 必须要有结束符 否则编译报错
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
application.ymlでThymeleafを構成します。公式の推奨事項は、yaml / yml形式の構成ファイルを使用することです。
yamlの使用の概要
YAML言語(発音:Yeah Maiou)ymlの設計目標は、人々が読み書きしやすくすることです。これは本質的に、ユニバーサルデータシリアル化形式です。
基本的な文法規則は次のとおりです。
- 1.大文字と小文字を区別
- 2.インデントを使用して階層関係を示します
- 3.インデント時にTabキーを使用することはできません。スペースのみを使用できます。
- 4.同じレベルの要素が左揃えである限り、インデントされたスペースの数は重要ではありません。
spring:
thymeleaf:
cache: false # 开发时关闭缓存,不然没法看到实时页面
mode: HTML # 用非严格的 HTML 不加nekohtml依赖的话这个模式用不了
encoding: UTF-8
servlet:
content-type: text/html
Thymeleafをテストする
- テスト用のJavaBeanユーザーを作成する
@Data //Lombok的注解 自动添加get set toString hashCode 等等基本方法
@Component //把这个bean注册到Spring
public class PersonBean implements Serializable {
private String name;
private Integer age;
}
- テストコントローラーを作成する
@Controller
@RequestMapping(value = "thymeleaf")
public class IndexController {
@RequestMapping(value = "index", method = RequestMethod.GET)
public String index(Model model) {
PersonBean person = new PersonBean();
person.setName("张三");
person.setAge(22);
List<PersonBean> people = new ArrayList<>();
PersonBean p1 = new PersonBean();
p1.setName("李四");
p1.setAge(23);
people.add(p1);
PersonBean p2 = new PersonBean();
p2.setName("王五");
p2.setAge(24);
people.add(p2);
PersonBean p3 = new PersonBean();
p3.setName("赵六");
p3.setAge(25);
people.add(p3);
model.addAttribute("person", person);
model.addAttribute("people", people);
return "index";
}
}
- テストページを作成する
- 空のindex.htmlページを作成します
- html5と入力し、Tabキーを押します
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Hello Thymeleaf</title>
</head>
<body>
<div>
<span>访问 Model:</span><span th:text="${person.name}"></span>
</div>
<div>
<span>访问列表</span>
<table>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<tr th:each="human : ${people}">
<td th:text="${human.name}"></td>
<td th:text="${human.age}"></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
- htmlタグを変更してthymeleafエンジンを導入し、th:*構文を他のタグで使用できるようにします。宣言は次のとおりです。
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
- SpringBoot Thymeleafテストへのアクセスをテストする次のデータが表示された場合、テストは成功しています。
[外部リンク画像の転送に失敗しました。ソースサイトにヒル防止リンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします(img-1sb711i2-1588560276266)(02F69E2682964569845B93966674C7D3)] - テストに成功しました!
Springがyml形式の構成ファイルの使用を公式に推奨するのはなぜですか
- パワフル
- 複雑なデータ型「オブジェクト配列マップなど」を格納できます。
- 構成ファイルの構造を明確にする
yml構成ファイルはJavaBean初期化データを構成します
- Userクラスを変更して、次の属性を追加します
private Map<String,Object> hobby; //爱好
private List<String> pets; //所有宠物
private boolean ishappy; //是否开心
- 次の構成をymlファイルに追加します
person:
name: 师文远
age: 22
hobby: {
v1: 唱,v2: 跳,v3: rap}
pets:
- aa1
- aa2
- aa3
ishappy: true
- ユーザークラス名の上にコメントを追加します
@ConfigurationProperties(value = "person") //与yml中的对象保持一致
- テストクラスに追加する
@Resource
private User user;
@Test
public void getUserInfo() {
System.out.println(user);
}
- 試験結果