TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
package freemarker; public class NewsItem {
public String title;
public String addTime;
public String showContent; public String getAddTime() {
return addTime;
}
public void setAddTime(String addTime) {
this.addTime = addTime;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getShowContent() {
return showContent;
}
public void setShowContent(String showContent) {
this.showContent = showContent;
} public void loadData(){
this.title=”测试内容”;
this.showContent=”测试freemarker生成静态页面”;
this.addTime=”2007-09-10″;
}
} FreeMarkerTest.java package freemarker; import java.io.*;
import java.util.HashMap;
import java.util.Map; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import freemarker.template.*;
public class FreeMarkerTest { private final Log logger = LogFactory.getLog(getClass()); private Configuration freemarker_cfg = null; static String sGeneFilePath = “d:\test\”; static String sGeneFileName = “freemarker.htm”; static String sTempPlateFilePath = “d:\test\”; public static void main(String[] args) throws IOException { // @todo 创建一个类,然后创建instance
NewsItem aItem = new NewsItem();
aItem.loadData(); FreeMarkerTest test = new FreeMarkerTest(); Map root = new HashMap();
root.put(”newsitem”, aItem); boolean bOK = test.geneHTMLFile(”template.ftl”, root, sGeneFilePath,
sGeneFileName); } protected Configuration getFreeMarkerCFG() {
if (null == freemarker_cfg) {
// Initialize the FreeMarker configuration;
// - Create a configuration instance
freemarker_cfg = new Configuration(); // - FreeMarker支持多种模板装载方式,可以查看API文档,都很简单:路径,根据Servlet上下文,classpath等等 // htmlskin是放在classpath下的一个目录
// freemarker_cfg.setClassForTemplateLoading(this.getClass(),
// “/htmlskin”);
// freemarker_cfg.setTemplateLoader(arg0)
// freemarker_cfg.set
try {
freemarker_cfg.setDirectoryForTemplateLoading(new File(
sTempPlateFilePath));
} catch (Exception ex) { ex.printStackTrace();
}
} return freemarker_cfg;
} public boolean geneHtmlFile(String templateFileName, Map propMap,
String htmlFilePath, String htmlFileName) {
// @todo 从配置中取得要静态文件存放的根路径:需要改为自己的属性类调用 try {
Template t = getFreeMarkerCFG().getTemplate(templateFileName); // 如果根路径存在,则递归创建子目录
creatDirs(htmlFilePath); File afile = new File(htmlFilePath + “/” + htmlFileName); Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(afile))); t.process(propMap, out);
} catch (TemplateException e) {
logger.error(”Error while processing FreeMarker template ”
+ templateFileName, e);
return false;
} catch (IOException e) {
logger.error(”Error while generate Static Html File ”
+ htmlFileName, e);
return false;
} return true;
}
public static boolean creatDirs(String path) {
File aFile = new File(path); if (!aFile.exists()) {
return aFile.mkdirs();
} else {
return true;
}
} }
template.ftl <html>
<head> <title>查看文章: </title>
</head> <body>
<table width=”100%” border=”0″ cellpadding=”0″ cellspacing=”0″ bgcolor=”#FFFFFF”>
<tr><td>
<table width=”95%” border=”0″ align=”center” cellpadding=”2″ cellspacing=”6″ >
<tr>
<td height=”10″ align=”left” colspan=2 ></td>
</tr>
<tr>
<td align=”left” width=”538″ >
<strong>$ {newsitem.title}</strong> ( $ {newsitem.addTime} )
</td>
<td align=”right”>
<a href=”index.jsp” mce_href=”index.jsp”>返回</a>
</td>
</tr>
<tr>
<td align=”left” valign=top colspan=2>
<hr align=”left” width=”95%” size=”1″ noshade color=”#cc0000″ >
</td>
</tr>
<tr>
<td colspan=2>$ {newsitem.showContent}
</td>
</tr>
</table>
<br>
</td></tr>
</table>
</body> </html>
源码下载:http://file.javaxxz.com/2014/11/5/000046250.zip |
|