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、逻辑运算符

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

空值处理

内建函数

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


freemarker简单使用相关推荐

  1. 网页静态化技术Freemarker简单Demo

    为什么要用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 随着用户访问量以及数据量的增大,网页静态化技术方案如今越来越流行. 什么是网 ...

  2. Freemarker简单概述及其数据类型的简单学习—快速入门(一)

    FreeMarker的主要学习内容 一.FreeMarker概述 FreeMarker中文官方手册(可结合学习)http://freemarker.foofun.cn/ FreeMarker学习笔记源 ...

  3. Freemarker简单封装

    Freemarker是曾经很流行的一个模板库,它是一种通用的模板库,不仅仅可以用来渲染html. 模板可以分为两类: 只能生成特殊类型文件的模板,如jinja.django.Thymeleaf.jad ...

  4. Freemarker简单实现一个代码生成器。

    忽然想起以前工作的时候突发奇想写的一个一个代码生成器,也记录一下吧. 首先文件如下: 我的模板配置如下: package ${packageName}; import java.util.Date; ...

  5. FreeMarker对应各种数据结构解析

    FreeMarker对应各种数据结构解析 FreeMarker 是一个采用 Java 开发的模版引擎,是一个基于模版生成文本的通用工具. FreeMarker 被设计用来生成 HTML Web 页面, ...

  6. 【Java从0到架构师】项目实战 - 驾考(旧)- Freemarker、MyBatis-Plus

    项目实战 - 驾考(旧)- Freemarker.MyBatis-Plus 各种 Object Freemarker 简单使用 常用功能 集成到 SpringBoot MyBatis-Plus 简单使 ...

  7. 利用freemarker导出Excel(格式自定义)

    1. 使用背景:公司项目中需要导出Excel,使用了freemarker模板. 2. 操作步骤: (1)首先自己新建一个Excel表格,在里面写好自己的格式(最好同时写好一行假数据), (2)然后另存 ...

  8. java使用freemarker实现word下载

    freemarker 简单示例 1,引入依赖 2,引入依赖包 3,创建所需要的模板 3.1,新建一个word文档 3.2,将word模板另存为xml格式 4,代码实现 5,将模板需要动态更改的数据进行 ...

  9. (详细)如何使用Freemarker生成Word文档中的文本、图片、表格、附件?

    前言-Freemarker简单介绍 近期项目工作中需要编写大量格式相同但数据不同的Word文档,需要实现自动生成文档的效果,但是通过网上冲浪和官方文档搜索,相对来说,没有分类整理的文档,因此自己抽空简 ...

最新文章

  1. 网页失去焦点事件 visibilitychange
  2. IUSR_ 计算机名和IWAM_ 计算机名帐户的用户名和密码
  3. 隐藏在Win XP中的28个秘密武器
  4. jQuery 插件---hotkeys快捷键(热键).
  5. 快速识别Hash加密方式hashid
  6. unicode字符串 转 中文
  7. 【JavaScript】JavaScript模拟Class
  8. 关于for循环处理列表的思考
  9. input onclick=window.location.href='https://www'不能跳转问题。
  10. js数组往队头添加数据、js数组从队头移出数据
  11. 个人查阅资料-Sql语句
  12. 如何把Web Service 说清楚
  13. JAVA web App扫码登录
  14. 网页嵌入视频播放器代码大全
  15. 64位系统安装SQL2000SP4详细教程[已测试WIN72008R2]
  16. RationalDMIS 2020 CAD模型坐标系转换(山涧果子)2021
  17. 2021ccpc广州站总结
  18. ERP系统中BOM的作用
  19. 面试:1.C#中的委托是什么?事件是一种委托吗?
  20. 高频时电阻不再是电阻

热门文章

  1. 记住你即将死去--乔布斯斯坦福演讲
  2. 仿迅雷播放器教程 -- C++ windows界面库对比(11)
  3. 三菱a系列motion软体_沧州三菱MR-J4-350B
  4. FastAPI--参数提交Request Body(3)
  5. 冈萨雷斯《数字图像处理》学习笔记(十)图像分割
  6. 《数字图像处理》冈萨雷斯matlab函数statmoments、计算均值和n阶中心矩,并返回行向量
  7. 乐视三合一体感摄像头Astra pro开发记录1(深度图、彩色图及点云简单显示)
  8. ZeroMQ 中文指南 第二章 ZeroMQ进阶【转载】
  9. 我的收藏精品[把它共享出来,相信对大家有点用,毕竟是长时间收藏的](2)
  10. 关于Dreamweaver CS4的6件事