FreeMarker--页面静态化技术

FreeMarker–页面静态化技术

http://freemarker.foofun.cn/

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

FreeMarker 全称 FreeMarker Template Language (FTL / ftl)

FreeMarker主要由 Template file (模板文件) 和 Java object (Java数据)共同生成
在这里插入图片描述

Template file (模板文件)

<html>
	.........
	hello ${name}
	.........
</html>

Java object (Java数据)

	.........
	data.name = "小明";
	.........

Template file (模板文件)+ Java object (Java数据)
===>生成一个静态化页面

Output

<html>
	.........
	hello 小明;
	.........
</html>

注意事项:
模板:必须是.ftl后缀结尾的文件
数据:数据类型必须是Map对象或者Java实体类 List集合不行

FreeMarker中一些常用的标签使用案例

if标签
官方参考
http://freemarker.foofun.cn/ref_directive_if.html

<#if	age lt	16>	//  lt=>小于
		未成年!
		<#else>
		成年了!
</#if>

list标签
官方参考
http://freemarker.foofun.cn/ref_directive_list.html

<#list users as user>  // users是源数据,user是对象
	${user.name}===${user.age}
</#list>

页面静态化技术的编程步骤

1**.导入核心Freemarker.jar包**

**2.获取模板对象**
		获取Configuration对象	//为了获取模板对象
		Configuration config = new Configuration(Configuration.VERSION_2_3_28);	//参数是版本号

		设置默认的加载路径
		File file = new File(路径);
		config.setDirectoryForTemplateLoading(file);

		设置编码集
		config.setDefaultEncoding("utf-8");

		获取模板
		Template template = config.getYemplate(模板名);
		
**3.准备数据**
	
		时间戳(生成的模板的名字)
		Long time = System.cuttentTimeMillis();
		
		设置文件的保存名
		String url = time + suffix;	//生成的文件名 + 后缀

**4.生成静态资源**

		FileWriter Out = new FileWriter(new File(file,url));

		生成静态化页面
		template.process(obj,out);	//obj = Java数据:Map/实体类
		
**5.关流**
		out.cloes();
	
**6.返回生成的文件全名用于保存**
		
		return url;

下面是封装的一个FreeMarker的一个工具类 需要的小伙伴自取

方法一共需要4个参数

1.String templatePath ==>默认加载路径
2.String templateName ==>模板名
3.Object data ==>Java数据:Map集合或者Java实体类
4.String suffix ==>生成的静态化文件的后缀

如:

//路径
String Path = req.getServletContext().getRealPath("/static/template");
//模板
String url = FreeMarkerUtil.createFile(Path, "story.ftl", story, ".html");

下面是工具类的代码

package ys168.gonna.util;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import ys168.gonna.domain.ArticleType;
import freemarker.template.Configuration;
import freemarker.template.Template;

public class FreeMarkerUtil {

	public static String createFile(String templatePath,String templateName,Object data,String suffix){
		FileWriter out = null;
		try {
//			重要:模板(.ftl)和数据(Map对象或Java实体   ,但是List集合不行)
//			1.导入freemarker.jar
//			2.获取模板(Template)对象
//				获取Configuration对象 -- 为了获取模板对象
			Configuration config = new Configuration(Configuration.VERSION_2_3_28);
//				设置默认加载路径
			File file = new File(templatePath);
			config.setDirectoryForTemplateLoading(file);
//				设置默认编码
			config.setDefaultEncoding("utf-8");
//				获取模板
			Template template = config.getTemplate(templateName);
//			3.准备数据
//				map
//				java实体对象
//				时间戳
			long time = System.currentTimeMillis();
			String url = time+suffix;
//			4.template.process()生成静态资源
			out = new FileWriter(new File(file, url));
			template.process(data, out);
			return url;
//			5.创建xxx.ftl模板
//				模板中使用el表达式获取数据
//			6.测试运行
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if (out!=null) {
				try {
					out.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return null;
	}
}

初入小白,简单讲解,不喜勿喷,谢谢大家!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值