Freemarker 之 Java静态化 实例一

Freemarker是一种强大的web端模板技术,在当前Web开发中,SEO和客户端浏览速度尤为重要,其中将网页静态化是一个很好的解决方案。下面介绍Java中web开发结合Freemarker来实现静态化.

主要分为三步

1准备好模板文件,如Test.ftl

<html>

<head>

<title>${title}</title>

<styletype="text/css"link="${rccontextPath}/core.css">

</head>

<body>

<table>

<tr>

<td>商品编号</td>

<td>商品名称</td>

<td>商品说明</td>

</tr>

<#ifgoodsList?exist>

<#listgoodsListasgoods>

<tr>

<td>${goods.ggCode}</td>

<td>${goods.ggName}</td>

<td>${goods.ggDesc}</td>

</tr>

</#list>

</#if>

</table>

</body>

</html>

2在dao层封装静态化的方法

publicvoidcrateHTML(ServletContextcontext,Map<String,Object>data,StringtemplatePath,StringtargetHtmlPath){

ConfigurationfreemarkerCfg=newConfiguration();

//加载模版文件的路径

freemarkerCfg.setServletContextForTemplateLoading(context,"/WEB-INF/view/");

freemarkerCfg.setEncoding(Locale.getDefault(),"UTF-8");

try{

//指定模版路径

Templatetemplate=freemarkerCfg.getTemplate(templatePath,"UTF-8");

template.setEncoding("UTF-8");

//静态页面路径

StringhtmlPath=context.getRealPath("/WEB-INF/view/")+targetHtmlPath;

FilehtmlFile=newFile(htmlPath);

Writerout=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(htmlFile),"UTF-8"));

//处理模版并开始输出静态页面

template.process(data,out);

out.flush();

out.close();

}catch(Exceptione){

log.error("生成静态网页出错");

e.printStackTrace();

}

}

3在service层调用静态化dao

try{

//准备数据

List<Goods>goodsList=goodsService.queryAllGoods();

HashMap<String,Object>data=newHashMap<String,Object>();

data.put("goodsList",goodsList);//此处装载的key的名字要与模板文件中接收数据的名字保持一致

data.put("rccontextPath",servletContext.getContextPath());//生成图片、CSS、JS的绝对路径

//调用静态页面方法

staticWebDao.crateHTML(context,data,"Test.ftl","/Test.html");}catch(Exceptione){

e.printStackTrace();

}*/

需要注意的几点

1检查生成后的静态网页中图片、CSS及JS等的引用路径是否正确

2放入Map中的数据的key必须与模版文件中接收数据的名字保持一致

3设置的编码方式与你工程的编码方式保持一致

4注意输出流的关闭

5生成的静态网页文件名自定义

相关推荐