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