【SpringBoot】4、SpringBoot中整合Freemarker模板引擎

【SpringBoot】4、SpringBoot中整合Freemarker模板引擎FreeMarker 是一款模板引擎 即一种基于模板和要改变的数据 并用来生成输出文本 HTML 网页 电子邮件 配置文件 源代码等 的通用工具 它不是面向最终用户的 而是一个 Java 类库 是一款程序员可以嵌入他们所开发产品的组件 FreeMarker 是一个很值得去学习的模版引擎 它是基于模板文件生成其他文本的通用工具 本文主要介绍在 SpringBoot 中如何整合 FreeM

FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本( HTML 网页、电子邮件、配置文件、源代码等)的通用工具。

FreeMarker 是一个很值得去学习的模版引擎。它是基于模板文件生成其他文本的通用工具。

本文主要介绍在 SpringBoot 中如何整合 FreeMarker,一起来看看吧!!!

1、引入 Freemarker 依赖

<!-- Freemarker 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <!-- web 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 

通过 org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,我们可以看到 FreeMarker 的自动化配置,在这个类的构造方法中,注入了 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"; / * Well-known FreeMarker keys which are passed to FreeMarker's Configuration. */ private Map<String, String> settings = new HashMap<>(); } 

FreeMarkerProperties 中则配置了 Freemarker 的基本信息,例如模板位置在 classpath:/templates/ ,再例如模板后缀为 .ftl,那么这些配置我们以后都可以在 application.yml 中进行修改。

2、配置 Freemarker

在 application.yml 中进行配置 Freemarker

当然,SpingBoot 已经帮我们自动配置好了关于 Freemarker 的一系列配置,但是我们仍可以对其进行个性化配置

spring: freemarker: # 是否开启缓存 cache: false # 模板文件编码 charset: UTF-8 # 是否检查模板位置 check-template-location: true # Content-Type的值 content-type: text/html
		# 模板文件后缀
		suffix: .ftl # 模板文件位置 template-loader-path: classpath:/templates/ 

3、编写 Controller

@Controller public class IndexController { 
    / * 请求 index 页面 * @return */ @GetMapping("index") public ModelAndView index() { 
    ModelAndView mav = new ModelAndView("index"); mav.addObject("title", "首页"); List<UserInfo> list = new ArrayList<>(); UserInfo user = null; for (int i = 0; i < 10; i++) { 
    user = new UserInfo(); user.setId(i + 1); user.setNickName("user" + i); user.setSignature("SpringBoot真香,+" + (i + 1)); list.add(user); } mav.addObject("users", list); return mav; } } 

4、创建模板

创建 index.ftl 模板文件

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>${ 
   title}</title> </head> <body> <table border="1"> <tr> <td>用户编号</td> <td>用户昵称</td> <td>个性签名</td> </tr> <#list listas item> <td>${ 
   item.id}</td> <td>${ 
   item.nickName}</td> <td>${ 
   item.signature}</td> </#list> </table> </body> </html> 

5、效果展示

首页
表格

总结

与 Thymeleaf 一样,在 SpringBoot 中对 Freemarker 做了一系列的自动化配置,真正做到了开箱即用,非常易于开发。

如您在阅读中发现不足,欢迎留言!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200955.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:15
下一篇 2026年3月20日 上午10:15


相关推荐

  • int 和bigint差别有多大?

    int 和bigint差别有多大?

    2021年10月27日
    86
  • PM3激活成功教程加密IC卡

    PM3激活成功教程加密IC卡IC卡已经在我们的生活中无处不在了,门禁,电梯,吃饭,洗车,可以说与我们的生活息息相关了。(为了把加密的校园一卡通复制到我的小米手环上,我也是煞费苦心,看网上各种大佬教程)但是如果有一天,你的门禁卡丢了,怎么配呢?跟配钥匙一样的,必须现有原钥匙才可以。那我们今天就看看,如何用PM3来配门禁卡钥匙。准备好门禁母卡和复制的空白卡,复制的全过程是这样的。放原卡-》读卡-》激活成功教程密码-》读出数据-》放新卡-》写入数据-》完成复制!1、连接好PM3硬件设备,运行我们的杀手锏软件PM3的gui版本很多,我们

    2022年6月25日
    68
  • 深入解析Linux Platform_device 及驱动

    深入解析Linux Platform_device 及驱动[导读]前文分析了Linux设备驱动的驱动模型,本文来聊聊Platform_driver/Platform_device这个类。做嵌入式Linux的驱动,这个也是绕不开的,所以来学习分析总结一下。

    2022年7月3日
    24
  • bs4 Beautiful Soup详解

    bs4 Beautiful Soup详解Python bs4 的使用概述 bs4 全名 BeautifulSou 是编写 python 爬虫常用库之一 主要用来解析 html 标签 一 初始化 frombs4impor BeautifulSou html AHtmlText html html parser 两个参数 第一个参数是要解

    2026年3月17日
    2
  • 用户表的设计_角色和权限管理数据表设计

    用户表的设计_角色和权限管理数据表设计基于角色的访问控制:(javaWeb编程口诀)用户表角色表,用户角色中间表。角色表权限表,角色权限中间表。一个用户可有多个角色,一个角色又可有多个权限。这就是用户-角色-权限授权的模型。为何不直接让用户对应权限?角色=一定数量的权限集合将特定用户的权限封装到一个角色。封装,或者面向对象设计的体现。不足:此时,在用户之上加一个userGroup用户组的概念。可给单个用户授权或特定用户组授权。这样,一次授权,多个用户得到相同权限,此时用户所拥有的权限是用户个人权限+用户所在组权限用户组,用户与角色三者的关系

    2026年4月15日
    6
  • C语言贪吃蛇完整代码

    C语言贪吃蛇完整代码#include<stdio.h>#include<stdlib.h>#include<Windows.h>//windows编程头文件#include<time.h>#include<conio.h>//控制台输入输出头文件#ifndef__cplusplustypedefcharbool;#define…

    2022年5月9日
    60

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号