这段时间做了一个根据模板生成html页面的功能,是自己采用string的replace来实现替换标签的。在做之前是准备使用freemaker,不过由于某些原因只好采用自己替换的形式,这里在写一次使用freemarker的示例。
因为项目采用maven,加入依赖
<dependency>
<groupId>freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.1</version>
</dependency>
hello.flt的内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
hello,${user}
</body>
</html>
代码如下:
public static void main(String[] args) throws IOException, TemplateException {
//获取路径
String context=Config.GetFileDirect();
if (!StringUtils.endsWith(context, "/") && !StringUtils.endsWith(context, "\\"))
context += '/';
//根据模板生成文件
Configuration conf=new Configuration();
conf.setDirectoryForTemplateLoading(new File(context+"template/"));
conf.setSetting("defaultEncoding", "UTF-8");
Template temp = conf.getTemplate("hello.ftl");
Map<String,Object> datas = new HashMap<String,Object>();
datas.put("user", "游客");
String outPath=context+"hello.html";
File outFile=new File(outPath);
Writer out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
temp.process(datas, out);
}
运行后生成的html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
hello,游客
</body>
</html>