Freemarker 网页静态化(一) - 静态化以及概览

声明:本系列文章为个人学习笔记,部分内容来自Freemarker官方手册

什么是网页静态

 静态页面是网页的代码都在页面中,不需要执行asp,php,jsp,.net等程序生成客户端网页代码的网页,静态页面网址中一般不含“?”、“=”、“&”等特殊符号。

 静态页面不能自  主管理发布更新的页面,如果想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件修改(通过fso等技术例外).

 常见的静态页面举例:.html扩展名的、.htm扩展名的。


为什么要网页静态化

1.方便搜索引擎收录

2.提高程序性能

先于用户获取资源或数据库数据进而通过静态化处理,生成静态页面,所有人都访问这一个静态页面,而静态化处理的页面本身的访问速度要较动态页面快很多倍,因此程序性能会有大大的提升。总之静态化在页面上的体现为:访问速度加快,用户体验性明显提升;在后台体现为:访问脱离数据库,减轻了数据库访问压力(百度百科)。


Freemarker

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


利用Freemarker静态化网页

步骤:制作模板->制作数据模型->结合

1.模板

模板要根据freemarker 的FTL (FreeMarker模板语言)指令以及表达式来制作

2.数据模型

  • 数据模型可以被看成是树形结构。

  • 标量用于存储单一的值。这种类型的值可以是字符串,数字,日期/时间或者是布尔值。

  • 哈希表是一种存储变量及其相关且有唯一标识名称的容器。

  • 序列是存储有序变量的容器。存储的变量可以通过数字索引来检索,索引通常从0开始。

3.编码结合

相关API

  • Configuration(freemarker.template.Configuration)

Configuration 实例是存储 FreeMarker 应用级设置的核心部分。同时,它也处理创建和 缓存 预解析模板(比如 Template 对象)的工作。注意:它是单例

  • Template(freemarker.template.Template)

获取存在的模板,Template 实例以解析后的形式存储模板, 而不是以源文件的文本形式。

Configuration 缓存 Template 实例,当再次获得 test.ftl 的时候,它可能再读取和解析模板文件了, 而只是返回第一次的 Template实例。

代码

Configuration config=new Configuration(Configuration.VERSION_2_3_24);
config.setDirectoryForTemplateLoading(new File(this.getServletContext().getRealPath("/")+"/template"));//设置模板路径
config.setDefaultEncoding("UTF-8");//编码
config.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
Map<String,Object> root=new HashMap<>();//数据模型
root.put("user",userName);
		
Template temple=config.getTemplate("test.ftl");//获取模板
Writer out = new OutputStreamWriter(new FileOutputStream(this.getServletContext().getRealPath("/")+"index.html"));//生成最终页面并写到文件
try {
	temple.process(root, out);//处理
} catch (TemplateException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}finally
{
	out.close();
}
response.sendRedirect("index.html");//因为在Servlet环境

模板test.ftl

<html>
<head>
  <title>Welcome!</title>
</head>
<body>
  <h1>Welcome ${user}!</h1>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值