首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >重学SpringBoot3-集成FreeMarker

重学SpringBoot3-集成FreeMarker

作者头像
CoderJia
发布2024-10-18 09:08:00
发布2024-10-18 09:08:00
41200
代码可运行
举报
运行总次数:0
代码可运行
freemarker主页
freemarker主页

FreeMarker 是一个用于生成文本输出(如 HTML 网页、电子邮件、配置文件、源代码等)的 Java 府模板引擎。它遵循 MVC 模式,将业务逻辑和表现层分离。FreeMarker 模板使用 FreeMarker Template Language (FTL) 编写,这是一种简单、专用的语言。在 Spring Boot 3 中集成 FreeMarker 作为模板引擎是一个简单直接的过程,Spring Boot 的自动配置功能大大简化了配置工作。以下是将 FreeMarker 集成到 Spring Boot 应用的基本步骤:

1. 添加 FreeMarker 依赖

首先,你需要在项目的 pom.xml 文件中添加 FreeMarker 的依赖。Spring Boot 会自动配置 FreeMarker 以及与之相关的视图解析器,只要它发现 FreeMarker 在类路径上。

代码语言:javascript
代码运行次数:0
运行
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2. 配置 FreeMarker 属性(可选)

虽然 Spring Boot 提供了合理的默认配置,但你可能想要根据需要调整一些属性。你可以在 application.propertiesapplication.yml 文件中设置 FreeMarker 的配置。例如,你可以设置模板的存储位置、字符集等:

代码语言:javascript
代码运行次数:0
运行
复制
# application.properties
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true

3. 创建 FreeMarker 模板

src/main/resources/templates/ 目录下创建 FreeMarker 模板文件。例如,创建一个名为 welcome.ftl 的模板文件:

代码语言:javascript
代码运行次数:0
运行
复制
<!DOCTYPE html>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome ${name}!</h1>
</body>
</html>

4. 编写控制器

创建一个控制器来处理请求并返回模板视图。在控制器方法中,你可以添加模型数据,这些数据将传递给 FreeMarker 模板。

代码语言:javascript
代码运行次数:0
运行
复制
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
​
@Controller
public class WelcomeController {
​
    @GetMapping("/welcome")
    public String welcome(Model model) {
        model.addAttribute("name", "Spring Boot");
        return "welcome";
    }
}

在上面的示例中,控制器方法 welcome 返回 welcome 视图,并向模型中添加一个名为 name 的属性。FreeMarker 模板将使用这个属性来渲染页面。

5. 运行应用程序

运行你的 Spring Boot 应用程序,访问对应的 URL(例如 http://localhost:8080/welcome),你将看到 FreeMarker 渲染的页面,其中包含从控制器传递的数据。

FreeMarker 基本语法

以下是 FreeMarker 基本语法的概述:

数据模型

FreeMarker 通过数据模型与模板交互。数据模型是由键值对组成的,其中键是字符串,而值可以是简单类型(字符串、数字、布尔值等)、序列(列表、数组)或映射(map)。

变量

在模板中,你可以通过 ${variableName} 语法来访问数据模型中的变量。

代码语言:javascript
代码运行次数:0
运行
复制
Hello, ${name}!

条件判断

FreeMarker 提供了 ifelse 语句用于条件判断。

代码语言:javascript
代码运行次数:0
运行
复制
<#if score >= 60>
    Passed
<#else>
    Failed
</#if>

循环

使用 list 指令来遍历序列(列表、数组)。

代码语言:javascript
代码运行次数:0
运行
复制
<#list users as user>
    ${user.index}. ${user.name}<br/>
</#list>

包含其他模板

可以使用 include 指令来包含其他模板文件。

代码语言:javascript
代码运行次数:0
运行
复制
<#include "header.ftl">

宏(Macro)

宏允许你定义可重用的模板片段。

定义宏:

代码语言:javascript
代码运行次数:0
运行
复制
<#macro welcome user>
    Hello, ${user}!
</#macro>

使用宏:

代码语言:javascript
代码运行次数:0
运行
复制
<@welcome user="John"/>

赋值

在模板中可以使用 assign 指令来赋值变量。

代码语言:javascript
代码运行次数:0
运行
复制
<#assign x = 10>

内建函数

FreeMarker 提供了许多内建函数用于字符串处理、数学运算等。

代码语言:javascript
代码运行次数:0
运行
复制
${"FreeMarker".lower_case()}

注释

FreeMarker 的注释可以使用 <#-- 注释内容 --\>

代码语言:javascript
代码运行次数:0
运行
复制
<#-- 这是一个注释 -->

转义

如果需要输出${这种字符,可以使用\$或者<@来转义。

代码语言:javascript
代码运行次数:0
运行
复制
\${${variable}}

总结

通过上述步骤,可以轻松地将 FreeMarker 集成到 Spring Boot 3 应用中。Spring Boot 的自动配置特性使得这个过程变得非常简单,几乎不需要手动配置。不过,如果需要,仍然可以通过 application.propertiesapplication.yml 文件自定义 FreeMarker 的各种属性。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 添加 FreeMarker 依赖
  • 2. 配置 FreeMarker 属性(可选)
  • 3. 创建 FreeMarker 模板
  • 4. 编写控制器
  • 5. 运行应用程序
  • FreeMarker 基本语法
    • 数据模型
    • 变量
    • 条件判断
    • 循环
    • 包含其他模板
    • 宏(Macro)
    • 赋值
    • 内建函数
    • 注释
    • 转义
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档