利用freemarker生成模板

在cms中使用freemarker将页面生成html文件,本节测试html文件生成的方法:
1、使用模板文件静态化 定义模板文件,使用freemarker静态化程序生成html文件。
2、使用模板字符串静态化 定义模板字符串,使用freemarker静态化程序生成html文件。
使用模板文件静态化
在test下创建测试类,并且将main下的resource/templates拷贝到test下,本次测试使用之前我们在main下创建的模板文件。

//基于模板生成静态化文件
@Test
public void testGenerateHtml() throws IOException, TemplateException {
//创建配置类
Configuration configuration=new Configuration(Configuration.getVersion());
//设置模板路径
String classpath = this.getClass().getResource("/").getPath(); 
configuration.setDirectoryForTemplateLoading(new File(classpath + "/templates/")); 
//设置字符集
configuration.setDefaultEncoding("utf‐8");
//加载模板
Template template = configuration.getTemplate("test1.ftl");
//数据模型
Map<String,Object> map = new HashMap<>();
map.put("name","奥特曼");
//静态化
String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map); 
//静态化内容
System.out.println(content);
InputStream inputStream = IOUtils.toInputStream(content);
//输出文件
FileOutputStream fileOutputStream = new FileOutputStream(new File("d:/test1.html"));
int copy = IOUtils.copy(inputStream, fileOutputStream);
}

使用模板字符串静态化

//基于模板字符串生成静态化文件
@Test
public void testGenerateHtmlByString() throws IOException, TemplateException {
//创建配置类
Configuration configuration=new Configuration(Configuration.getVersion()); 
//模板内容,这里测试时使用简单的字符串作为模板
String templateString="" +
"<html>\n" +
               "    <head></head>\n" +
" <body>\n" +
" 名称:${name}\n" +
               "    </body>\n" +
               "</html>";
//模板加载器
StringTemplateLoader stringTemplateLoader = new StringTemplateLoader(); 
stringTemplateLoader.putTemplate("template",templateString); 
configuration.setTemplateLoader(stringTemplateLoader);
//得到模板
Template template = configuration.getTemplate("template","utf‐8");
//数据模型
Map<String,Object> map = new HashMap<>();
map.put("name","葫芦娃");
//静态化
String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map); 
//静态化内容
System.out.println(content);
InputStream inputStream = IOUtils.toInputStream(content);
//输出文件
FileOutputStream fileOutputStream = new FileOutputStream(new File("d:/test1.html")); 
IOUtils.copy(inputStream, fileOutputStream);
}

猜你喜欢

转载自blog.csdn.net/weixin_43794897/article/details/85058685