SpringBoot中的Freemarker 模板

Freemarker模板概述:

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

  其次FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language (FTL)。属于一种简单的,专用的语言。比如数据库查询和业务运算之后, 模板显示已经准备好的数据。在模板中,你可以专注于如何展现数据,而在模板之外可以专注于要展示什么数据。

  总体上,模板和数据模型是 FreeMarker 来生成输出所必须的组成部分:模板 + 数据模型 = 输出,Freemarker 的作用主要是将动态页面转换成伪静态 html 页面,提高搜索引擎的收录。具体框架的介绍和用法可参考 http://freemarker.foofun.cn(官网)。

Freemarker 模板语法:模板的默认后缀为.ftl,内容除了静态内容外,其数据模型主要包括标量、指令、方法等
  标量的四种类型:
        1、布尔值。
        2、数字。
        3、字符串。
        4、日期类型(子类型:日期(没有时间部分),时间或者日期-时间)
  总体的结构:
          1、文本:文本会照着原样来输出
        2、插值:这部分的输出会被计算的值来替换。插值由 ${ and } 所分隔(或者 #{ and }
        3、FTL 标签:FTL标签和HTML标签很相似,但是它们却是给FreeMarker的指示, 而且不会打印在输出内容中(FTL标签也被称为 指令)
        4、注释:注释和HTML的注释也很相似,但它们是由 <#-- 和 -->来分隔的。注释会被FreeMarker直接忽略, 更不会在输出内容中显示
        5、一个freemarker模板里可以有文本、插值、ftl(指令)、注释
  Freemarker中的指令:
        1、if指令:作用:使用 if 指令可以有条件地跳过模板的一些片段
             语法结构:
                SpringBoot中的Freemarker 模板

        2、list指令(遍历集合): 作用:当需要列表显示内容时,list指令是必须的。list 指令执行在 list 开始标签和 list 结束标签

                   语法结构:

                SpringBoot中的Freemarker 模板

                  注意事项:list是个对象,可以通过打点调用属性

        3、include 指令: 作用:用于在模板中插入另外一个 FreeMarker 模板文件

                 语法:<#include ".../test.ftl">

 SpringBoot集成Freemarker模版:

    1、创建maven项目

    2、引入freemarker模板所需要的依赖文件

      SpringBoot中的Freemarker 模板

    3、配置freemarker所需要配置的属性

      SpringBoot中的Freemarker 模板

    4、编写controller准备一些测试数据

    5、编写ftl模板

    6、运行项目,测试结果

freemarker的优势:
    1、性能、普通的页面 freemarker 性能较差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker 的性能比使用 tag 和 el 的 jsp 好

    2、内置大量常用功能。比如 html 过滤,日期金额格式化等等,使用非常方便
    3、宏定义比 jsp tag 方便
    4、支持 jsp 标签
    5、可以实现严格的 mvc 分离