ホームページ >Java >&#&チュートリアル >SpringBoot が Thymeleaf と FreeMarker ビュー レイヤ テクノロジをどのように統合するか

SpringBoot が Thymeleaf と FreeMarker ビュー レイヤ テクノロジをどのように統合するか

WBOY
WBOY転載
2023-05-20 14:34:241336ブラウズ

Thymeleaf の統合

Thymeleaf は、Velocity や FreeMarker などの従来の Java テンプレート エンジンと同様の、新世代の Java テンプレート エンジンです。従来の Java テンプレート エンジンとは異なり、Thymeleaf は HTML プロトタイプをサポートしているため、フロントエンド エンジニアはブラウザでスタイルを直接開いて表示でき、バックエンド エンジニアは実際のデータに基づいて表示効果を確認できます。 Spring Boot は Thymeleaf 自動構成ソリューションを提供しているため、Spring Boot で Thymeleaf を使用すると非常に便利です。 Thymeleaf を Spring Boot に統合するために使用できる手順は次のとおりです

1. プロジェクトを作成して依存関係を追加します

Spring Boot プロジェクトを作成し、spring-boot-starter-web と spring を追加します-boot-starter-thymeleaf は

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--    整合Thymeleaf    -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2 に依存します。Thymeleaf の構成

Spring Boot は、Thymeleaf の自動構成クラス ThymeleafAutoConfiguration を提供します。関連する構成プロパティは、ThymeleafProperties クラスにあります。ソースの一部です。 ThymeleafProperties クラスのコードは次のとおりです。

@ConfigurationProperties(prefix = "spring.thymeleaf")
public class ThymeleafProperties {
	private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;
	public static final String DEFAULT_PREFIX = "classpath:/templates/";
	public static final String DEFAULT_SUFFIX = ".html";
}

この構成からわかるように、デフォルトのテンプレートの場所は classpath:/templates/ で、デフォルトのテンプレートのサフィックスは .html です。 IDEA を使用して Spring Boot プロジェクトを作成すると、デフォルトでいくつかのファイルがテンプレート フォルダーに作成されます。デフォルトの Thymeleaf 設定パラメータをカスタマイズする必要がある場合は、application.properties で設定できます。一般的な設定の一部は次のとおりです:

#キャッシュを有効にするかどうか、開発中に false に設定できます。デフォルトは true
spring.thymeleaf.cache=false
#テンプレートが存在するかどうかを確認します。デフォルトは true
spring.thymeleaf.check-template=true
#テンプレートが存在するかどうかを確認しますlocation が存在します。デフォルトは true
spring.thymeleaf.check-template-location=true
#テンプレート ファイルのエンコーディング
spring.thymeleaf.encoding=UTF-8
#テンプレート ファイルの場所
spring.thymeleaf.prefix=classpath:/ templates/
#Content-Type 構成
spring.thymeleaf.servlet.content-type=text/html
#テンプレート ファイルのサフィックス
spring.thymeleaf.suffix =.html

3. コントローラーを設定します

次のように Book エンティティ クラスを作成し、コントローラーで ModelAndView を返します:

public class Book {
    private int id;
    private String name;
    private String author;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
}
@RestController
public class BookController {
    @GetMapping(value = "/books")
    public ModelAndView books(){
        List<Book> books = new ArrayList<>();
        Book b1 = new Book();
        b1.setId(1);
        b1.setAuthor("唐家三少");
        b1.setName("斗罗大陆Ⅰ");
        Book b2 = new Book();
        b2.setId(2);
        b2.setAuthor("唐家三少");
        b2.setName("斗罗大陆Ⅱ");
        books.add(b1);
        books.add(b2);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("books",books);
        modelAndView.setViewName("books");
        return modelAndView;
    }
}

4。ビューを作成します。

リソース ディレクトリに次のように、books.html をテンプレート ディレクトリに作成します。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>图书列表</title>
</head>
<body>
<table border="1">
    <tr>
        <td>图书编号</td>
        <td>图书名称</td>
        <td>图书作者</td>
    </tr>
    <tr th:each="book:${books}">
        <td th:text="${book.id}"></td>
        <td th:text="${book.name}"></td>
        <td th:text="${book.author}"></td>
    </tr>
</table>
</body>
</html>

コードの説明:

  • 最初に、 2 行目の Thymeleaf 名前空間

  • トラバーサルを通じてブック内のデータを表示します。Thymeleaf では、コレクションのトラバースに th:each が使用され、データの表示に th:text が使用されます。

#5. 実行

図に示すように、ブラウザに「http://localhost:8081/books」と入力して実行結果を表示します。

SpringBoot が Thymeleaf と FreeMarker ビュー レイヤ テクノロジをどのように統合するかFreeMarker の統合

FreeMarker は歴史ある Web 環境と Web 以外の環境の両方に適した、長年確立されているテンプレート エンジンです。 FreeMarker は、ブラウザに表示する前に解析する必要があります。 FreeMarker は、HTML ページ テンプレートの構成だけでなく、電子メール テンプレート、構成ファイル テンプレート、ソース コード テンプレートとしても使用できます。統合手順は次のとおりです:

1. プロジェクトを作成し、依存関係を追加します

Spring Boot プロジェクトを作成し、spring-boot-starter-web と spring-boot-starter- を追加します。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--    整合FreeMarker    -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2. FreeMarker の構成

Spring Boot では、FreeMarker の自動構成クラス FreeMarkerAutoConfiguration も提供されています。関連する構成プロパティは FreeMarkerProperties にあります。FreeMarkerProperties のソース コードの一部です。

@ConfigurationProperties(prefix = "spring.freemarker")
public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties {
	public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";
	public static final String DEFAULT_PREFIX = "";
	public static final String DEFAULT_SUFFIX = ".ftl";
    ...
}

FreeMarker のデフォルト テンプレートの場所は、Thymeleaf と同じで、両方とも classpath:/templates/ です。デフォルトのファイル接尾辞は .ftl です。開発者は、application.properties でこれらのデフォルト設定を変更できます。

3. コントローラー

コントローラーは Thymeleaf のコントローラーと同じであるため、ここでは繰り返しません

4. ビューの作成

次のように、リソース ディレクトリの下のテンプレート ディレクトリにbooks.ftl ファイルを作成します。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>图书列表FreeMarker</title>
</head>
<body>
<table border="1">
    <tr>
        <td>图书编号</td>
        <td>图书名称</td>
        <td>图书作者</td>
    </tr>
    <#if books ?? && (books?size>0)>
    <#list books as book>
        <tr>
            <td>${book.id}</td>
            <td>${book.name}</td>
            <td>${book.author}</td>
        </tr>
    </#list>
    </#if>
</table>
</body>
</html>

コードの説明:

まず、モデル内の書籍が制御可能であり、データがあることを確認します。

## を実行して、ブラウザに「http://localhost:8081/books」と入力して、実行結果を表示します (図を参照)。 ##################################

以上がSpringBoot が Thymeleaf と FreeMarker ビュー レイヤ テクノロジをどのように統合するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。