Freemaker生成静态html页面
Freemaker生成静态html页面 .FreeMarker 是一个用Java编写的模板引擎,主要用来生成HTML Web页面,特别是基
Freemaker生成静态html页面 .
FreeMarker 是一个用Java编写的模板引擎,主要用来生成HTML Web页面,特别是基于MVC模式的应用程序。虽然FreeMarker具有一些编程的能力,但不像PHP,通常由Java程序准备要显示的数据,由 FreeMarker模板生成页面。 FreeMarker可以作为Web应用框架一个组件,但它与容器无关,在非Web应用程序环境也能工作的很好。 FreeMarker适合作为MVC的视图组件,还能在模板中使用JSP标记库。
[java] view plaincopyprint?
- ???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;????
- ????}??????
- }??