FreeMarker框架的用法指南

ops/2025/1/31 21:05:18/

FreeMarker框架的用法指南

一、FreeMarker简介

FreeMarker是一个基于模板生成文本输出的通用工具,使用纯Java编写,能够生成HTML、XML、JSON、RTF、Java源代码等多种格式的文本。它广泛应用于Web开发、邮件生成、报告生成等场景,允许将数据模型与模板文件结合,生成动态的文本输出。

二、FreeMarker的基本概念

  1. 模板文件(*.ftl)
    FreeMarker的模板文件通常以.ftl为后缀,其中包含了用于生成文本的标记和指令。
  2. 数据模型
    数据模型是一个包含要插入模板中数据的对象,通常是一个Map或JavaBean。
  3. 输出
    通过模板和数据模型的结合,FreeMarker生成最终的文本输出。

三、FreeMarker的使用步骤

  1. 导入FreeMarker库
    将FreeMarker的jar包添加到项目中。如果是Maven项目,可以在pom.xml中添加以下依赖:
    xml复制

    org.freemarker
    freemarker
    2.3.32
  2. 创建FreeMarker配置对象
    使用Configuration类来创建FreeMarker的配置对象,并设置模板文件的路径、编码格式等。
    java复制
    Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);
    cfg.setDirectoryForTemplateLoading(new File(“src/main/resources/templates”));
    cfg.setDefaultEncoding(“UTF-8”);
  3. 获取模板文件
    使用Configuration对象的getTemplate方法来获取模板文件的对象。
    java复制
    Template template = cfg.getTemplate(“hello.ftl”);
  4. 创建数据模型
    创建一个数据模型对象,用于存储模板中所需的数据。
    java复制
    Map<String, Object> model = new HashMap<>();
    model.put(“user”, “World”);
  5. 渲染模板
    使用模板对象的process方法将数据模型与模板文件进行渲染,并将结果输出到指定的位置。
    java复制
    StringWriter writer = new StringWriter();
    template.process(model, writer);
    System.out.println(writer.toString());

四、FreeMarker模板的基本语法

  1. 变量
    用${variable}来引用变量。
  2. 条件语句
    使用<#if>和<#else>进行条件判断。
    HTML复制
    <#if condition>

    <#else>

    </#if>
  3. 循环
    使用<#list>进行列表循环。
    HTML复制
    <#list list as item>
    ${item}
    </#list>

  4. 定义可以重复使用的代码块。
    HTML复制
    <#macro macroName>

    </#macro>

五、FreeMarker与Spring Boot集成

在Spring Boot中,可以通过控制器方法将数据传递给FreeMarker模板。以下是一个简单的控制器方法示例:
java复制
@Controller
public class HomeController {
@GetMapping(“/”)
public String home(Model model) {
model.addAttribute(“title”, “Home Page”);
model.addAttribute(“appName”, “My App”);
model.addAttribute(“message”, “Welcome to my application!”);
return “home”;
}
}
同时,需要在Spring Boot的配置文件中添加FreeMarker的配置:
yaml复制
spring:
freemarker:
template-loader-path: classpath:/templates/
suffix: .ftl
content-type: text/html;charset=UTF-8

六、总结

FreeMarker是一个功能强大且灵活的模板引擎,适用于各种Java项目。通过将数据模型与模板文件分离,FreeMarker不仅提高了代码的可维护性,还促进了前后端的分离。无论是在Web开发、邮件生成还是报告生成中,FreeMarker都能提供高效的解决方案。希望本文的介绍能帮助你快速掌握FreeMarker的使用方法,并将其应用到实际项目中。


http://www.ppmy.cn/ops/154575.html

相关文章

Golang —协程池(panjf2000/ants/v2)

Golang —协程池&#xff08;panjf2000/ants/v2&#xff09; 1 ants1.1 基本信息1.2 ants 是如何运行的&#xff08;流程图&#xff09; 1 ants 1.1 基本信息 代码地址&#xff1a;github.com/panjf2000/ants/v2 介绍&#xff1a;ants是一个高性能的 goroutine 池&#xff0c…

sunrays-framework配置重构

文章目录 1.common-log4j2-starter1.目录结构2.Log4j2Properties.java 新增两个属性3.Log4j2AutoConfiguration.java 条件注入LogAspect4.ApplicationEnvironmentPreparedListener.java 从Log4j2Properties.java中定义的配置读取信息 2.common-minio-starter1.MinioProperties.…

7层还是4层?网络模型又为什么要分层?

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、为什么要分层 \quad 网络通信的复杂性促使我们需要一种分层的方法来理解和管理网络。就像建筑一样&#xff0c;我们不会把所有功能都混在一起…

基础项目实战——3D赛车(c++)

目录 前言一、渲染引擎二、关闭事件三、梯形绘制四、轨道绘制五、边缘绘制六、草坪绘制七、前后移动八、左右移动​九、曲线轨道​十、课山坡轨道​十一、循环轨道​十二、背景展示​十三、引入速度​十四、物品绘制​十五、课数字路障​十六、分数展示​十七、重新生成​十八、…

C++17 搜索器教程:解锁高效搜索新姿势

C17搜索器教程&#xff1a;解锁高效搜索新姿势 C17搜索器简介 在C的发展历程中&#xff0c;C17是一个重要的里程碑&#xff0c;它引入了诸多实用的新特性&#xff0c;搜索器功能便是其中之一。此功能着重对std::search算法进行了强化&#xff0c;使其支持多种搜索策略&#x…

关于opencv环境搭建问题:由于找不到opencv_worldXXX.dll,无法执行代码,重新安装程序可能会解决此问题

方法一&#xff1a;利用复制黏贴方法 打开opencv文件夹目录找到\opencv\build\x64\vc15\bin 复制该目录下所有文件&#xff0c;找到C:\Windows\System32文件夹&#xff08;注意一定是C盘&#xff09;黏贴至该文件夹重新打开VS。 方法二&#xff1a;直接配置环境 打开opencv文…

machine learning自定义数据集使用框架的线性回归方法对其进行拟合

使用框架&#xff08;如Scikit-learn&#xff09;对自定义数据集进行线性回归拟合是一个常见的任务。以下是一个详细的步骤指南&#xff0c;展示如何使用Scikit-learn库在Python中完成这一任务 import numpy as np from sklearn.model_selection import train_test_split fro…

搭建Spring Boot开发环境

JDK&#xff08;1.8及以上版本&#xff09; Apache Maven 3.6.0 修改settings.xml 设置本地仓库位置 <localRepository>D:/repository</localRepository> 设置远程仓库镜像 <mirror><id>alimaven</id><name>aliyun maven</name&…