Freemaker生成静态html页面 .
FreeMarker 是一个用Java编写的模板引擎,主要用来生成HTML Web页面,特别是基于MVC模式的应用程序。虽然FreeMarker具有一些编程的能力,但不像PHP,通常由Java程序准备要显示的数据,由 FreeMarker模板生成页面。 FreeMarker可以作为Web应用框架一个组件,但它与容器无关,在非Web应用程序环境也能工作的很好。 FreeMarker适合作为MVC的视图组件,还能在模板中使用JSP标记库。
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.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/**
* freemarker生成静态html
* @author lpz
*
*/
public class GeneratorHtml {
private Configuration config = null;
/**
* 如果目录不存在,则自动创建
* @param path
* @return boolean 是否成功
*/
private boolean creatDirs(String path) {
File aFile = new File(path);
if (!aFile.exists()) {
return aFile.mkdirs();
} else {
return true;
}
}
/**
* 模板生成静态html的方法
* @param templateFileName(模板文件名)
* @param templateFilePath(指定模板目录)
* @param contextMap (用于处理模板的属性Object映射)
* @param htmlFilePath(指定生成静态html的目录)
* @param htmlFileName(生成的静态文件名)
*/
@SuppressWarnings("unchecked")
public void geneHtmlFile(String templateFileName, String templateFilePath, Map contextMap,
String htmlFilePath, String htmlFileName) {
try {
Template t = this.getFreeMarkerCFG(templateFilePath).getTemplate(templateFileName);
// 如果根路径存在,则递归创建子目录
this.creatDirs(htmlFilePath);
File afile = new File(htmlFilePath + "/" + htmlFileName);
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(afile)));
t.process(contextMap, out);
out.flush();
out.close();
} catch (TemplateException e) {
System.out.print(e.getMessage());
} catch (IOException e) {
System.out.print(e.getMessage());
} catch (Exception e) {
System.out.print(e.getMessage());
}
}
/**
*
* 获取freemarker的配置,freemarker本身支持classpath,目录或从ServletContext获取.
*
* @param templateFilePath
* 获取模板路径
* @return Configuration 返回freemaker的配置属性
* @throws Exception
*/
private Configuration getFreeMarkerCFG(String templateFilePath)
throws Exception {
if (null == this.config) {
this.config = new Configuration();
try {
this.config.setDirectoryForTemplateLoading(new File(
templateFilePath));
} catch (Exception ex) {
throw ex;
}
}
return this.config;
}
} 相关推荐
hzq0 2020-10-05
Crazyshark 2020-09-05
willowwgx 2020-07-27
linjava 2020-06-14
tuxlcsdn 2020-06-13
池塘 2020-06-07
liqinglin0 2020-06-01
liqinglin0 2020-06-01
jvm 2020-05-30
deadgrape 2020-05-16
luohui 2020-05-15
一个逗逗 2020-04-16
Ericbig 2020-03-03
hellobabygogo 2020-02-21
morexyoung 2020-02-21
lmseohy 2020-02-21