FreeMarker 生成静态html
package auh.server; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Locale; import java.util.Map; import javax.servlet.ServletContext; import org.apache.struts2.ServletActionContext; import freemarker.template.Configuration; import freemarker.template.DefaultObjectWrapper; import freemarker.template.Template; import freemarker.template.TemplateException; /** * FreeMarker 生成静态html * @author 可可 * @param 默认模板文件放在web根目录下的/WEB-INF/template * @param sRootDir 生成的静态页面的根路径,默认为web的根路径,可以通过setSRootDir设置 */ public class MakeFile { private Configuration freemarker_cfg; private String sRootDir; public MakeFile(){ this.freemarker_cfg = new Configuration(); ServletContext con=ServletActionContext.getServletContext(); this.freemarker_cfg.setServletContextForTemplateLoading(con,"/WEB-INF/template"); //String templatePath=sRootDir+"/WEB-INF/template"; //freemarker_cfg.setDirectoryForTemplateLoading(new File(templatePath));//用路径装载 //freemarker_cfg.setClassForTemplateLoading(this.getClass(), "/htmlskin");//用classpath装载,htmlskin是放在classpath下的一个目录 this.freemarker_cfg.setNumberFormat("0.##########");//设置数字转换数字串的格式 this.freemarker_cfg.setEncoding(Locale.getDefault(), "UTF-8"); this.freemarker_cfg.setObjectWrapper(new DefaultObjectWrapper()); this.sRootDir =con.getRealPath("/"); } /** * 生成静态文件 * @param templateFileName 模板文件名,例如"view.ftl" * @param root 用于处理模板的属性Object映射 * @param htmlFilePath 要生成的静态文件的路径,相对设置中的根路径,例如 "/tpxw/1/2005/4/" * @param htmlFileName 要生成的文件名,例如 "1.html" * @return boolean 是否成功 */ public boolean geneHtmlFile(String templateFileName,Map<String,Object> root, String htmlFilePath,String htmlFileName ) { try{ Template t = this.freemarker_cfg.getTemplate(templateFileName); creatDirs(sRootDir,htmlFilePath); //如果根路径存在,则递归创建子目录 File fileName = new File(sRootDir +"/" +htmlFilePath + "/" + htmlFileName); Writer out = new OutputStreamWriter(new FileOutputStream(fileName),"UTF-8"); t.process(root, out);//生成静态文件 } catch (TemplateException e) { System.out.println(e); return false; } catch (IOException e) { System.out.println(e); return false; } return true; } /** * 创建多级目录 * @param aParentDir String * @param aSubDir 以 / 开头 * @return boolean 是否成功 */ public static boolean creatDirs(String aParentDir, String aSubDir) { File aFile = new File(aParentDir); if (aFile.exists()) { File aSubFile = new File(aParentDir + aSubDir); if (!aSubFile.exists())return aSubFile.mkdirs(); else return true; } else return false; } /** * 设置静态文件的存放的根路径 * @param rootDir 应为绝对路径。 */ public void setSRootDir(String rootDir) { sRootDir = rootDir; } public String getSRootDir() { return sRootDir; } }
相关推荐
81314797 2020-11-18
89314493 2020-11-03
81941231 2020-09-17
thisisid 2020-09-09
如狼 2020-08-15
82384399 2020-06-16
86384798 2020-05-12
80183053 2020-05-02
86384798 2020-04-26
86384798 2020-04-11
rionchen 2020-04-09
86384798 2020-04-07
86384798 2020-04-04
80183053 2020-03-07
87201943 2020-03-06
83961233 2020-02-26
87201943 2020-02-21