页面静态化技术
由于动态页面加载会损耗服务器的性能,使用页面静态化技术:以消化空间成本来降低时间成本;
页面静态化:将原有该通过服务器查询数据显示的页面通过页面静态化技术在创建该数据时,将该数据直接生成在页面模板上并且存储在服务器磁盘中,访问时直接获取该文件路径直接访问,以降低查询数据库的次数,减轻数据库的压力,提高查询效率并且响应速度更快。
FreeMarker
页面静态化技术的一种,全称:FreeMarker Template Language (FTL) 模板是以.ftl为后缀的
注意:
模板 (.ftl) 和数据 (Map对象或Java实体 ,但是List集合不行)
实现步骤:
1.导入freemarker.jar
2.获取模板(Template)对象
获取Configuration对象 – 为了获取模板对象
设置默认加载路径
设置默认编码
获取模板
3.准备数据
map
java实体对象
4.template.process()生成静态资源
5.创建xxx.ftl模板
模板中使用el表达式获取数据
6.测试运行
具体实现:
1.准备 ftl 文件 test.ftl
${id}
${name}
${code}
该文件是所需的模板文件,可以为任意类型文件,内容也可任意,支持 el 表达式
2.通过java代码实现
public class FreeMarkerTest {
@Test
public void testFreeMarker() throws Exception {
// 1.导入freemarker.jar
// 2.获取模板(Template)对象
// 获取Configuration对象 -- 为了获取模板对象
Configuration config = new Configuration(Configuration.VERSION_2_3_28);
// 设置默认加载路径
File file = new File("src/main/webapp/static/template");
config.setDirectoryForTemplateLoading(file);
// 设置默认编码
config.setDefaultEncoding("utf-8");
// 获取模板
Template template = config.getTemplate("test.ftl");
// 3.准备数据
ArticleType type = new ArticleType(1L,"这记性真的是","像是得了老年痴呆");
// map
// java实体对象
// 4.template.process()生成静态资源
FileWriter out = new FileWriter(new File(file, "1.txt"));
template.process(type, out);
out.close();
// 5.创建xxx.ftl模板
// 模板中使用el表达式获取数据
// 6.测试运行
}
}
测试运行后将在设置默认加载路径中生成一个 1.txt 文件
1
这记性真的是
像是得了老年痴呆
模板中的标签使用
if标签
<!-- 基本值获取&if的使用 -->
${name}的年龄为:
<#if age lt 18 >
未成年
<#elseif age gte 18 && age lt 40>
努力奋斗
<#else>
年老了
</#if>
list标签
<!-- list的使用 -->
<#list users as user>
${user.name} === ${user.age}
</#list>