淘淘商城48-freemaker页面静态化的介绍与使用方法

版权声明:本文为博主原创文章,如有转载请注明出处,谢谢。 https://blog.csdn.net/pdsu161530247/article/details/82144568

目录

1.freemaker页面静态化的介绍

2.freemaker的使用方法

2.1导入依赖

2.2使用freemarker

2.2.1编写模板文件Template

2.2.2提供model并生成静态页面


1.freemaker页面静态化的介绍

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

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

在所有采用网页静态化手段的网站中,FreeMarker使用的比例大大的超过了其他的一些技术。HTML静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以使用FreeMarker将HTML静态化比如一些网站的公用设置信息,这些信息基本都是可以通过后台来管理并存储在数据库中,这些信息其实会大量的被前台程序调用,每一次调用都会去查询一次数据库,但是这些信息的更新频率又会很小,因此也可以考虑将这部分内容进行后台更新的时候进行静态化,这样就避免了大量的数据库访问请求,从而也就提高了网站的性能  。JSP相比,FreeMarker的一个优点在于不能轻易突破模板语言开始编写Java代码,因此降低了领域逻辑漏进视图层的危险几率。

freemarker官网:http://freemarker.foofun.cn/

2.freemaker的使用方法

2.1导入依赖

首先需要创建一个工程,我这里使用的maven,导入依赖

<dependency>
	<groupId>org.freemarker</groupId>
	<artifactId>freemarker</artifactId>
	<version>2.3.23</version>
</dependency>
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
</dependency>

2.2使用freemarker

根据官方给的文档可以看出,使用freemarker就是,自己提供模板文件Template和数据model,将Template于model提供给freemarker,帮我们输出对应的静态页面

2.2.1编写模板文件Template

在src/main/resources下创建两个目录,一个用于存放模板,一个用于存放生成的静态页面

其中模板的内容为

<html>
<head>
	<title>freemarker入门</title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
${hello}
</body>
</html>

2.2.2提供model并生成静态页面

使用步骤:
第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
第二步:设置模板文件所在的路径。
第三步:设置模板文件使用的字符集。一般就是utf-8.
第四步:加载一个模板,创建一个模板对象。
第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
第六步:创建一个Writer对象,一般创建一FileWriter对象,指定生成的文件名。
第七步:调用模板对象的process方法输出文件。
第八步:关闭流。

package com.freemarker.test;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class GenHtm {
	// 生成静态页面的方法
	/**
	 * freemarker入门
	 * @throws IOException
	 * @throws TemplateException
	 */
	@Test
	public void genHtmlTest() throws IOException, TemplateException {
		// 第一步:创建一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。
		Configuration configuration = new Configuration(Configuration.getVersion());
		// 第二步:设置模板文件所在的路径。
		configuration.setDirectoryForTemplateLoading(new File(
				"F:\\code\\eclisep-taotao\\freemarker\\src\\main\\resources\\template"));
		// 第三步:设置模板文件使用的字符集。一般就是utf-8.
		configuration.setDefaultEncoding("utf-8");
		// 第四步:加载一个模板,创建一个模板对象。
		Template template = configuration.getTemplate("hello.htm");
		// 第五步:创建一个模板使用的数据集,可以是pojo也可以是map。一般是Map。
		Map<Object, Object> model = new HashMap<>();
		model.put("hello", "hello world");
		// 第六步:创建一个Writer对象,指定生成的文件名。
		FileWriter writer = new FileWriter(new File("F:\\code\\eclisep-taotao\\freemarker\\src\\main\\resources\\freemarker\\hello.html"));
		// 第七步:调用模板对象的process方法输出文件。
		template.process(model, writer);
		// 第八步:关闭流。
		writer.close();
	}
}

直接运行即可,看到生成的静态页面。

在模板中的${hello},在静态页面中被渲染成hello world

猜你喜欢

转载自blog.csdn.net/pdsu161530247/article/details/82144568