Hello,又到周一,搜狗测试小编华安又和大家见面啦。今天我们聊一聊java的模板引擎之一-----Freemarker!Let's go!

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面

1.Freemarker介绍

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

模板编写为FreeMarkerTemplate Language (FTL)。它是简单的,专用的语言, 不是 像PHP那样成熟的编程语言。 那就意味着要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据,而在模板之外可以专注于要展示什么数据。

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_02

这种方式通常被称为 MVC (模型 视图 控制器) 模式,对于动态网页来说,是一种特别流行的模式。 它帮助从开发人员(Java 程序员)中分离出网页设计师(HTML设计师)。设计师无需面对模板中的复杂逻辑, 在没有程序员来修改或重新编译代码时,也可以修改页面的样式。

而FreeMarker最初的设计,是被用来在MVC模式的Web开发框架中生成HTML页面的,它没有被绑定到 Servlet或HTML或任意Web相关的东西上。它也可以用于非Web应用环境中。

官网:http://freemarker.foofun.cn/

为了方便演示,新建项目demo,且项目目录结构如下:

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_03

2.前期准备

2.1数据库:

CREATE TABLE `user` (
 `id` int(11) NOT NULL DEFAULT '0',
 `name` varchar(255) NOT NULL,
 `age` int(11) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

并且插入两条数据:

freemarker 模板生成java文件 freemarker ftl模板_freemarker ftl模板_04

2.2环境配置文件准备

2.2.1POM文件如下:

Spring boot 必备 + spring boot 测试类

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_05

freemarker 模板生成java文件 freemarker ftl模板_freemarker ftl模板_06

freemarker 模板生成java文件 freemarker ftl模板_freemarker ftl模板_06

Spring boot的父依赖(必备)

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_08

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_09

2.2.2 application.properties文件准备(数据库配置 + mybatis 配置+freemarker 配置) 

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_10

2.2.3项目配置文件准备:

Mapper文件

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_11

Ftl文件,这里简单打印 user的name。

freemarker 模板生成java文件 freemarker ftl模板_freemarker ftl模板_12

启动,预览配置好的controller。

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_13

成功~!

3.代码详见以下git地址

因为涉及的代码较多,为了方便大家阅读本文,故,在此未贴出详细代码

如有需要可以参考以下git信息。

https://github.com/JeffLi1993/springboot-learning-example/tree/master/springboot-freemarker

4.常见的问题解答:

程序如何找到user.ftl的?

会去拼接user.ftl

return "user";

不知道ftl中的参数users是哪里来的?

Model对象中的users会传递到 user.ftl中。

model.addAttribute("users",users);

UserDao 无法注入,出现Could not autowire. No beans of 'UserDao'type found。

在DAO接口上添加@Mapper 标签

Controller中无法找到serviceimple的bean

在service层上添加@service

不知道程序如何找到mapper文件的

在Application.properties文件中。

freemarker 模板生成java文件 freemarker ftl模板_springboot返回html页面_14

Spring boot 返回字符串,不返回渲染页面

把@RestController替换为@Controller注解

@RestController注解表示返回的内容都是HTTP Content不会被模版引擎处理的

详细的例子搭建可以参考第三步给出的代码信息,最好是doneload下来,自己手动拼撸一遍哦。