Bootstrap

freemarker简单使用

freemarker简介

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

它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

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

freemarker是springmvc一种视图格式,默认情况下SpringMVC支持freemarker视图格式。
在这里插入图片描述

freemarker的使用

  1. 导入依赖
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
  1. 配置application.yml
spring:
  application:
    name: freemarker-demo #指定服务名
  freemarker:
    cache: false  #关闭模板缓存,方便测试
    settings:
      template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试
    suffix: .ftl               #指定Freemarker模板文件的后缀名
    template-loader-path: classpath:/templates   #模板存放位置,指的是类路径:resource目录下需要创建templates这个包,用于保存模板
  1. 在templates包下,创建模板,以 .ftl 为后缀名
  2. freemarker生成页面的方式有两种:
  • 动态渲染数据:基于模板、controller方法返回到此模板
  • 静态页面:基于模板、配置类,使用Freemarker原生Api将文本或者图片按照模板生成静态内容。调用方法返回的是url地址,可通过url地址访问此页面

注意:两种方式,都需要先生成模板

  1. 利用@Autowired注入Configuration类对象
  2. 通过configuration对象调用getTemplate方法,传入自定义模板的名称,生成模板对象
  3. 获取数据
  4. 通过模板对象调用process方法,传入数据、创建一个输出流并且指定要写入到哪里。这样就可以将数据按照模板样式写入到指定地址,生成html页面

生成静态页面举例

 public void test() throws IOException, TemplateException {
        //生成freemarker的模板对象,调用方法获取模板
        Template template = configuration.getTemplate("02-list.ftl");
        //获取数据的过程,这里自定义封装成了方法
        Map params = getData();
        //合成
        template.process(params, new FileWriter("D:/list.html")); //第一个参数:数据模型,第二个参数:输出流
}

freemarker语法

基础语法种类

1、注释,即<#-- -->,介于其之间的内容会被freemarker忽略

<#--我是一个freemarker注释-->

2、插值(Interpolation):即 ${..} 部分,freemarker会用真实的值代替**${..}**

Hello ${name}

3、FTL指令:和HTML标记类似,名字前加#予以区分,Freemarker会解析标签中的表达式或逻辑。

<# >FTL指令</#> 

4、文本,仅文本信息,这些不是freemarker的注释、插值、FTL指令的内容会被freemarker忽略解析,直接输出内容。

<#--freemarker中的普通文本-->
我是一个普通的文本
集合指令(List和Map)

在这里插入图片描述

在这里插入图片描述

if指令

if 指令即判断指令,是常用的FTL指令,freemarker在解析时遇到if会进行判断,条件为真则输出if中间的内容,否则跳过内容不再输出。

在这里插入图片描述

运算符

1、算数运算符

FreeMarker表达式中完全支持算术运算,FreeMarker支持的算术运算符包括:

加法:+     减法:-      乘法:*     除法:/      求模 (求余):%

在这里插入图片描述

除了 + 运算以外,其他的运算只能和 number 数字类型的计算。

2、比较运算符

在这里插入图片描述

3、逻辑运算符

逻辑运算符只能作用于布尔值,否则将产生错误

在这里插入图片描述

空值处理

在这里插入图片描述

内建函数

内建函数语法格式: 变量+?+函数名称

在这里插入图片描述
在这里插入图片描述

;