FreeMarker
1.页面静态化
-
页面静态化其实就是将原来的动态网页(例如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生成的静态网页,这样用户在访问网页时,服务器直接给用户响应静态html页面,没有了动态查询数据库的过程。
-
常用的静态化模板引擎
- Freemarker
- Thymeleaf
- Mustache
2.Freemarker介绍
-
定义 : FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输出
-
场景:
- 页面静态化生成(把一个动态加载数据的页面生成html的过程,叫静态化)
- 合同模板生成
- 邮件模板生成
- 自动生成代码
-
原理/组成:
- Template:模板
- Model:模板要用到的数据
- Output:模板+数据渲染后生成的静态html
3.Freemarker入门案例
- 创建maven工程并导入Freemarker的maven坐标
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
- 创建模板文件(Freemarker的模板文件后缀可以任意,一般建议为ftl)
<html>
<head>
<meta charset="utf-8">
<title>Freemarker入门</title>
</head>
<body>
<#--我只是一个注释,我不会有任何输出 -->
${name}你好,${message}
</body>
</html>
-
生成文件
使用步骤:
第一步:创建一个 Confifiguration 对象,直接 new 一个对象。构造方法的参数就是 freemarker的版本
号。
第二步:设置模板文件所在的路径。
第三步:设置模板文件使用的字符集。一般就是 utf-8。
第四步:加载一个模板,创建一个模板对象。
第五步:创建一个模板使用的数据集,可以是 pojo 也可以是 map。一般是 Map。
第六步:创建一个 Writer 对象,一般创建 FileWriter 对象,指定生成的文件名。
第七步:调用模板对象的 process 方法输出文件。
第八步:关闭流。
public class FreemarkerTest {
public static void main(String[] args) throws Exception{
//创建freemarker的配置对象
Configuration configuration = new Configuration(Configuration.getVersion());
//设置模板文件所在目录
configuration.setDirectoryForTemplateLoading(new File("d:\\ftl"));
//设置字符集
configuration.setDefaultEncoding("utf-8");
//加载模板文件
Template template = configuration.getTemplate("test.ftl");
//准备模板文件中所需要的数据,通常是通过Map进行构造
Map map = new HashMap();
map.put("name","zhangsan");
map.put("message","hello freemarker!!");
//准备输出流对象,用于输出静态文件
Writer writer = new FileWriter("d:\\ftl\\test.html");
//输出
template.process(map,writer);
//关闭流
writer.close();
}
}
4.Freemarker基本语法
基本语法
- 1、文本,直接输出的部分
- 2、注释,即<#–…-->格式不会输出
- 3、插值(Interpolation):即${…}部分,将使用数据模型中的部分替代输出
- 4、FTL指令:FreeMarker指令,和HTML标记类似,名字前加#予以区分,不会输出
FTL指令
-
assign,在模板页面中定义一个变量
<#assign info={"mobile":"13812345678",'address':'北京市昌平区'} > 电话:${info.mobile} 地址:${info.address}
-
include,引入其他页面到当前模板中
<#include "head.ftl"/>
-
if else 指令,用于判断条件
<#if success=true> 你已通过实名认证 <#elseif success=true> 你已通过实名认证 <#else> 你未通过实名认证 </#if>
-
list 指令,用于遍历集合
- as固定语法
<#list goodsList as goods> 商品名称: ${goods.name} 价格:${goods.price}<br> </#list>
-
内置函数
- 日期
Last updated date: ${lastUpdated?string('yyyy-MM-dd')}<br> Last updated date: ${lastUpdated?date}<br> Last updated time: ${lastUpdated?time}<br> Last updated time: ${lastUpdated?datetime}<br>
5.Freemarker使用小结
1.什么是网页静态化技术
随着用户访问量以及数据量的增大,网页静态化技术方案如今越来越流行。
什么是网页静态化技术呢?简单来说就是将网页以纯静态方式的形式展现。
2.网页静态化技术与缓存技术的比较
共同点:都可以减小数据库的访问压力。
区别:
(1)缓存技术适用于小规模的数据。以及一些经常变动的数据。
(2)网页静态化技术适用于大规模但是变化不太频繁的数据。
3.网页静态化技术的应用场景
(1)新闻门户网站的文章类型频道一般都用到了网页静态化技术。点击新闻直接会跳到静态化的页面。
(2)电商网站的商品详情页也十分常用,我们在存储商品的时候会生成静态化页面,点击商品详情,会直接跳到生成的商品详情的静态化页面。
(3)网页静态化技术可以结合Nginx这种高性能web服务器来提高并发访问量。
4.什么是FreeMarker
FreeMarker是一款用Java语言编写的模板引擎,用它可以通过模板和要改变的数据来生成输出文本(例如HTML网页,配置文件,源代码等),作为用来实现网页静态化技术的一种手段。FreeMarker的使用率大大超过其他一些技术。对于系统中频繁使用数据库进行查询但是内容更新很小的应用,都可以用FreeMarker将网页静态化,这样就避免了大量的数据库访问请求,从而提高网站的性能。