1.封装工具类
需要在工程里面导包freeMarker.jar
package cn.itsource.util;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreemarkerUtil {
public static String create(String templateurl,String templateName,Object obj,String suffix){
//1.创建一个配置对象,用于创建模板的,需要传递一个版本
Configuration config = new Configuration(Configuration.VERSION_2_3_28);
//申明一个htmlurl变量接收静态页面的名称
String htmlurl = "";
PrintWriter out = null;
try {
//2.设置模板的路径
File file = new File(templateurl);
config.setDirectoryForTemplateLoading(file);
//3.设置默认的编码
config.setDefaultEncoding("UTF-8");
//4.创建模板
Template template = config.getTemplate(templateName);
//5.处理生成文件的名称
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
htmlurl = uuid + suffix;//jkj545dfds5f45sd4f5sd5f.html
//5.生成静态资源
out = new PrintWriter(new File(file,htmlurl));
template.process(obj, out);
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
if(out!=null){
out.close();
}
}
return htmlurl;
}
}
2.在三层架构中使用
业务层,逻辑处理在业务层
@Override
public void add(Jobs j , String templateurl) {//传入的是对象数据和模板所在路径(写在项目里面的文件夹)
//调用工具时传入的是模板所在路径、模板文件名、(数据)对象数据、后缀名
//然后返回一个随机名字的html的文件如4141251412.html
String htmlurl = FreeMarkerUtil.create(templateurl, "join_us_details.ftl", j, ".html");
//将这个文件名写入j对象的字段
j.setHtmlurl(htmlurl);
//继续往后面执行添加方法
dao.add(j);
}
这样路径出来之后就可以直接访问里面的HTML页面了,也就将页面静态化了