java根据ftl生成html_FreeMarker生成HTML模板

本文介绍了如何使用Java结合FreeMarker库来根据ftl模板文件生成HTML。详细讲解了Java代码实现过程,包括配置FreeMarker、设置模板目录、编码、加载模板以及将数据渲染到HTML文件中。
摘要由CSDN通过智能技术生成

欢迎来到阿八个人博客网站。本

阿八个人博客

网站提供最新的站长新闻,各种互联网资讯。

喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术!

URL链接:https://www.abboke.com/xwzhj/2019/0611/363.html

wxgzh02.png

今天,总结下FreeMarker生成HTML模板。

模板文件

这个template.ftl是freemarker的ftl模板文件,freemarker会解析这个文件,然后才生成HMTL文件。

${person.title}

${person.time}

${person.name}

Java代码

Java核心代码,通过createHTMLFile方法解析FTL文件,并生成HTML文件。

package com.lianggzone.freemarker;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.HashMap;

import java.util.Locale;

import java.util.Map;

import org.apache.commons.lang.StringUtils;

import freemarker.template.Configuration;

import freemarker.template.Template;

import freemarker.template.TemplateException;

/**

* 测试FreeMarker生成HTML模板

* @author LiangGzone

* @version 2014-01-08

*/

public class FreeMarkerTest {

public static void main(String[] args) throws IOException {

FreeMarkerTest test = new FreeMarkerTest();

PersonBean person = new PersonBean();

Map map = new HashMap();

person.loadData();

map.put("person", person);

boolean flag = test.createHTMLFile("d:/liang/template.ftl","d:/liang/template.html", map);

}

/**

* 根据ftl模板文件,生成静态HTML文件

* @param ftlPath FTL模板文件路径,例如["c:/liang/template.ftl"]

* @param filePath 生成HMTL文件路径,例如["d:/liang/lianggzone.html"]

* @param data Map数据

* @return

*/

public boolean createHTMLFile(String ftlPath, String filePath, Mapdata) {

Writer out = null;

//获取HMTL文件目录

String fileDirectory = StringUtils.substringBeforeLast(filePath, "/");

//获取HMTL文件名

String fileName = StringUtils.substringAfterLast(filePath, "/");

//获取HMTL文件目录

String ftlDirectory = StringUtils.substringBeforeLast(ftlPath, "/");

//获取HMTL文件名

String ftlName = StringUtils.substringAfterLast(ftlPath, "/");

try {

//文件递归创建生成文件目录

File realDirectory = new File(fileDirectory);

if (!realDirectory.exists()) {

realDirectory.mkdirs();

}

//step1 获取freemarker的配置

Configuration freemarkerCfg = new Configuration();

//step2 设置freemarker模板所放置的位置(文件夹)

freemarkerCfg.setDirectoryForTemplateLoading(new File(ftlDirectory));

//step3 设置freemarker模板编码

freemarkerCfg.setEncoding(Locale.getDefault(), "GBK");

//step4 找到对应freemarker模板并实例化

Template template = freemarkerCfg.getTemplate(ftlName);

//step5 初始化一个IO流

out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(filePath)), "GBK"));

//step6 模板渲染出所要的内容

template.process(data, out);

} catch (TemplateException e) {

e.printStackTrace();

return false;

} catch (IOException e) {

e.printStackTrace();

return false;

} finally{

try {

out.flush();

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return true;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值