freemarker生成静态页、获取指定文件内容

package com.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Locale;
import java.util.Map;

import javax.servlet.ServletContext;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class InitHtml {
/* 生成静态页面主方法 
  * @param context ServletContext 
  * @param data 一个Map的数据结果集 
  * @param templatePath ftl模版路径 
  * @param targetHtmlPath 生成静态页面的路径 
  * String templatePath : ftl所在的路径。这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。 
  * String targetHtmlPath : 最后生成静态页的路径:这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。
  */ 
public static void crateHTML(ServletContext context,Map<String,Object> data,String templatePath,String targetHtmlPath){ 
  Configuration freemarkerCfg = new Configuration(); 
  //加载模版 
  freemarkerCfg.setServletContextForTemplateLoading(context, "/"); 
  freemarkerCfg.setEncoding(Locale.CHINA, "utf-8"); 
 
  try { 
   //指定模版路径 
   Template template = freemarkerCfg.getTemplate(templatePath,"UTF-8"); 
   template.setEncoding("UTF-8"); 
   //静态页面路径 
   String htmlPath = context.getRealPath("/html")+"/"+targetHtmlPath; 
   File htmlFile = new File(htmlPath); 
   Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8")); 
            //处理模版 
        template.process(data, out); 
        out.flush(); 
        out.close(); 
  } catch (Exception e) { 
   e.printStackTrace(); 
  } 
}
/**
* @author wwd
* @Title: getHtml
* @Description: 获取index.html文件内容
* @param @return    设定文件
* @return String    返回类型
* @throws
*/
public static String getHtml(){
//获取当前项目根路径
String filePath = InitHtml.class.getClassLoader().getResource("").getPath().split("WEB-INF")[0];
//获取当前项目根路径下的html文件
String fileHtml = filePath+"html/index.html";
//读取文件类容
int lenght = 0;
StringBuffer buffer = new StringBuffer();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileHtml),"UTF-8"));
while((lenght = br.read()) > -1){
buffer.append((char)lenght);
}
br.close();

} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
}
}

猜你喜欢

转载自wang94777600.iteye.com/blog/2218451