码迷,mamicode.com
首页 > 编程语言 > 详细

Freemarker 之 Java静态化 实例一

时间:2016-01-23 23:14:48      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:

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 生成的静态网页文件名自定义

Freemarker 之 Java静态化 实例一

标签:

原文地址:http://www.cnblogs.com/mfc-itblog/p/5154247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!