当前位置: 代码迷 >> Web前端 >> Freemarker 之 Java静态化 范例一
  详细解决方案

Freemarker 之 Java静态化 范例一

热度:1094   发布时间:2013-12-02 12:00:40.0
Freemarker 之 Java静态化 实例一

Freemarker是一种强大的web端模板技术,在当前Web开发中,SEO和客户端浏览速度尤为重要,其中将网页静态化是一个很好的解决方案。下面介绍Java中web开发结合Freemarker来实现静态化.
主要分为三步
1 准备好模板文件,如Test.ftl
<html>
<head>
<title>${title}</title>
<style type="text/css" link="${rccontextPath}/core.css">
</head>
<body>
<table>
<tr>
<td>商品编号</td>
<td>商品名称</td>
<td>商品说明</td>
</tr>
<#if goodsList?exist>
<#list goodsList as goods>
<tr>
<td>${goods.ggCode}</td>
<td>${goods.ggName}</td>
<td>${goods.ggDesc}</td>
</tr>
</#list>
</#if>
</table>
</body>
</html>

2 在dao层封装静态化的方法
public void crateHTML(ServletContext context,Map<String,Object> data,String templatePath,String targetHtmlPath){
     Configuration freemarkerCfg = new Configuration();
     //加载模版文件的路径
     freemarkerCfg.setServletContextForTemplateLoading(context, "/WEB-INF/view/");
     freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8");
     try {
      //指定模版路径
      Template template = freemarkerCfg.getTemplate(templatePath,"UTF-8");
      template.setEncoding("UTF-8");
      //静态页面路径
      String htmlPath = context.getRealPath("/WEB-INF/view/")+targetHtmlPath;
      File htmlFile = new File(htmlPath);
              Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "UTF-8"));
              //处理模版并开始输出静态页面
              template.process(data, out);
              out.flush();
              out.close();
     } catch (Exception e) {
      log.error("生成静态网页出错");
      e.printStackTrace();
     }
  }

3 在service层调用静态化dao

try{ 
      //准备数据
      List<Goods> goodsList=goodsService.queryAllGoods();
      HashMap<String,Object> data = new HashMap<String,Object>();
         data.put("goodsList",goodsList);//此处装载的key的名字要与模板文件中接收数据的名字保持一致
         data.put("rccontextPath",servletContext.getContextPath());//生成图片、CSS、JS的绝对路径
      //调用静态页面方法
     staticWebDao.crateHTML(context,data,"Test.ftl","/Test.html");     }catch(Exception e){
      e.printStackTrace();
     }*/

需要注意的几点
1 检查生成后的静态网页中图片、CSS及JS等的引用路径是否正确
2 放入Map中的数据的key必须与模版文件中接收数据的名字保持一致
3 设置的编码方式与你工程的编码方式保持一致
4 注意输出流的关闭
5 生成的静态网页文件名自定义
  相关解决方案