前言

在之前的文章Spring Boot 整合 Thymeleaf中,我们学习了如何将模板 Thymeleaf 整合到 Spring Boot 中,那今天我们就来看看,另一个老牌的开源免费模板引擎 - FreeMarker!

FreeMarker 简介

FreeMarker 是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

以上就是出自 FreeMarker 的官方定义,我们通过使用 FreeMarker,可以将我们所需的模板何数据渲染成 HTML,从而实现我们想要的效果。通过将模板与数据分开,让分工更加明确,模板方面则专注于如何将数据进行展现,而在数据方面,我们就可以专注于展示何种数据,下图就是我们以上所描述的 FreeMarker 的功能。

那接下来,我们就来看看,如何将 FreeMarker 像 Thymeleaf 一样整合到我们的 Spring Boot 中,让我们的开发更加简单。

准备工作

环境准备

正式开始之前,依然给出本文所基于的环境,避免环境问题可能给大家带来的影响。

  • JDK 17(理论上推荐不低于 1.8 版本)
  • IDEA
  • SpringBoot 2.x

添加 FreeMarker 依赖

开始之前,我们需要添加 FreeMarker 的相关依赖,同样这里我们可以选择两种方式。一种是在创建项目时就添加上,另一种则是创建项目后在项目 pom.xml 文件中手动添加,接下来我们分别来看看两种不同的方式应该如何添加。如果还不清楚如何创建 Spring Boot 项目,可以参照我之前的一篇文章:创建 Spring Boot 项目的 3 种方式。

  1. 第一种

在使用 IDEA 创建 Spring Boot 新项目时,添加依赖时将模板引擎中的 Apache FreeMarker 勾选上。

2.第二种

如果在创建时未添加 FreeMarker 模板引擎依赖,或者在项目开始创建之初并未有此需求,但后续过程中又增加了该需求,则此时可以直接在项目 pom.xml 中手动添加 FreeMarker 依赖即可。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

添加 FreeMarker 相关配置

添加依赖后,我们需要在项目配置文件 application.yml 中添加 FreeMarker 的相关配置。

spring:freemarker:# 模板后缀名suffix: .ftl# 文档类型content-type: text/html# 页面编码charset: UTF-8# 页面缓存cache: false# 模板路径template-loader-path: classpath:/templates/

编写实体类和 Controller

编写实体类

创建一个 User 类,并将其各种 settergetter、构造方法等完成,这里我依然使用了 Lombok 插件,以便简化我们的代码。关于该插件的更多用法,可以参照我之前的文章:Lombok 的安装及使用指南。

package com.cunyu.springbootfreemarkerdemo.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;/*** Created with IntelliJ IDEA.** @author : zhangliang* @version : 1.0* @project : java-learning* @package : com.cunyu.springbootfreemarkerdemo.entity* @className : User* @createTime : 2021/11/30 21:55* @email : 747731461@qq.com* @公众号 : 村雨遥* @website : https://cunyu1943.github.io* @description :*/@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private int age;private String name;private String email;
}

编写 Controller

这里我们创建一个 User 对象,然后设置其年龄、Email、姓名等相关信息,然后将其加到属性中,方便传输到前端进行展示。

package com.cunyu.springbootfreemarkerdemo.controller;import com.cunyu.springbootfreemarkerdemo.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;/*** Created with IntelliJ IDEA.** @author : zhangliang* @version : 1.0* @project : java-learning* @package : com.cunyu.springbootfreemarkerdemo.controller* @className : UserController* @createTime : 2021/11/30 22:04* @email : 747731461@qq.com* @公众号 : 村雨遥* @website : https://cunyu1943.github.io* @description :*/
@Controller
public class UserController {@GetMapping("/index")public String index(Model model) {User user = new User();user.setAge(26);user.setEmail("747731461@qq.com");user.setName("村雨遥");model.addAttribute("user", user);return "index";}
}

数据渲染

当完成实体类和 Controller 编写后,我们就可以利用模板来进行展示了。我们在项目的 resources/templates 路进行新建一个 index.ftl 文件,注意这里文件名要保持和 Controller 中 index 方法所返回的字符串一致。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>FreeMarker 实验</title>
</head>
<body><table><tr><td>姓名</td><td>年龄</td><td>Email</td></tr><tr><td>${user.name}</td><td>${user.age}</td><td>${user.email}</td></tr></table>
</body>
</html>

测试

将我们的项目启动起来,然后在浏览器中访问如下路径:

http://localhost:8080/index

如果显示如下图中的信息,那么就说明我们此次的整合工作顺利完成!

总结

以上就是 Spring Boot 整合 FreeMarker 的具体过程了,可以结合之前的文章:Spring Boot 整合 Thymeleaf 实例共同阅读,对比 Thymeleaf 和 FreeMarker 在整合过程中的一些共同点和不同点,相信你会有更多的收获。

最后,关于本文案例代码,我已经上传到 GitCode,有需要的小伙伴可以自取:传送门。

Spring Boot 整合 FreeMarker 实例相关推荐

  1. freemarker ftl模板_Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

    今天来聊聊 Spring Boot 整合 Freemarker. Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎.通过 Freemarker 模版,我们可以将数据渲染成 HTML ...

  2. Spring Boot 整合 Freemarker

    这是一个相当老牌的开源的免费的模版引擎.通过 Freemarker 模版,我们可以将数据渲染成 HTML 网页.电子邮件.配置文件以及源代码等.Freemarker 不是面向最终用户的,而是一个 Ja ...

  3. Spring Boot整合Freemarker

    目录 Freemarker模板 导入 Freemarker模板 Freemarker自动化配置 创建类说明 其他配置 直接输出值 输出变量 其他常见表达式 常见内置函数 常见指令 宏 Freemark ...

  4. spring boot整合freemarker及freemarker基础语法超详细讲解

    采用模板+数据=HTML 实现页面的静态化. 也就是服务端的页面静态化技术. JSP/Freemarker/Thymeleaf是常见的模板引擎. 引依赖 okhttp与HttpClient一样的作用, ...

  5. Spring Boot整合Drools规则引擎实例

    1.DRools介绍 官网:https://www.drools.org/ 规则引擎主要完成的就是将业务规则从代码中分离出来. DRools一款由JBoss组织提供的基于Java语言开发的开源规则引擎 ...

  6. java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板

    点击"牧码小子"关注,和众多大牛一起成长! 关注后,后台回复 java ,领取松哥为你精心准备的技术干货! 虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在 ...

  7. Spring boot 整合 Mybatis 实现增删改查(MyEclipse版)

    1.首先搭建好一个Spring boot 程序,编写好启动类. 启动类代码如下: @SpringBootApplication public class Start {public static vo ...

  8. Elasticsearch实战篇——Spring Boot整合ElasticSearch

    2019独角兽企业重金招聘Python工程师标准>>> 当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来 ...

  9. Spring Boot(十四):spring boot整合shiro-登录认证和权限管理

    Spring Boot(十四):spring boot整合shiro-登录认证和权限管理 使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉 ...

最新文章

  1. stn算子_在 Excel 中,公式都是以 ____________ 开始的,后面由操作数和运算符构成。...
  2. 【错误记录】Android Studio 中 build.gradle 配置 buildFeatures prefab 错误处理 ( AS 4.1 以上开发环境 | Gradle及插件版本 )
  3. 快来领猪肉啊,网易云官网建设意见征集计划获奖名单公布
  4. 【Git/Github学习笔记】Git课程简介
  5. 7本免费的Java电子书和教程
  6. jquery.blockui示例
  7. python创建txt文件换行输入,python如何创建txt文件并写入
  8. 笔记本计算机涂硅脂,笔记本电脑怎么涂cpu散热硅脂
  9. 键盘删除键长按只能删除一个字符?--关闭Windows筛选键
  10. 做sxy官网的一点经验
  11. 白平衡算法---色温曲线
  12. ups机房动环监控系统方案
  13. Web简易时间轴制作(超详细)
  14. 副族元素从上到下原子半径_原子的大小以原子半径来表示
  15. pip 切换清华镜像源
  16. 【python】 输出换行字符 “\n“
  17. java实现邮箱注册验证
  18. 论文阅读笔记《Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendation》
  19. 松下Megacon叠屏液晶电视有声音没图像怎么修理
  20. (转)王国斌:牛市还是熊市应该在意吗?

热门文章

  1. 基于uniapp搭建的个人课程表-主前端
  2. 惠普电脑u盘重装系统步骤_惠普电脑怎么重装系统|惠普电脑重装系统步骤
  3. 幕布,XMind , Effie , 让你对学习这件事上瘾
  4. 前后端分离项目—微信小程序的创建及app.json的配置(二)
  5. 2021年度中关村硬科技孵化器支持资金申报,奖励高达1000万
  6. 变频控制与移相控制组成的混合式控制全桥LLC谐振变换器仿真(PFM+PSM混合控制) 输出电压闭环控制,软开关,宽范围
  7. 2021河北高考英语口试成绩查询6,2020河北英语四六级准考证查询入口:http://cet-bm.neea.cn/Home/QueryTestTicke...
  8. Adobe有哪些软件?
  9. android 布局分析,关于Android应用程序界面五大布局的图文分析教程
  10. 运营商使劲倒腾5G,中国移动咪咕汇8K+120帧开启直播新视界了吗?