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静态化 实例一的更多相关文章

  1. 二、freemarker.controller半自动静态化+Tomcat虚拟资源映射

    描述:本内容主要是讲2个tomcat之间同时共享一个静态话页面,统一入口是springMVC的一个controller,静态化的更新只需要传false.true.把完成的web项目放入a.b服务器To ...

  2. 【转】使用Freemarker实现网页静态化

    使用Freemarker实现网页静态化 2017年08月20日 20:45:51 阅读数:1981 1.1. 什么是freemarker FreeMarker是一个用Java语言编写的模板引擎,它基于 ...

  3. JAVAEE——宜立方商城10:使用freemarker实现网页静态化、ActiveMq同步生成静态网页、Sso单点登录系统分析

    1. 学习计划 1.使用freemarker实现网页静态化 2.ActiveMq同步生成静态网页 2. 网页静态化 可以使用Freemarker实现网页静态化. 2.1. 什么是freemarker ...

  4. FreeMarker实现网页静态化

    1.FreeMarker实现网页静态化. FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运行时,它并不知道Servl ...

  5. 一、springMVC、freemarker页面半自动静态化

    说明:刚刚接到公司的通知,实现(半自动化),即通过参数控制是否需要静态化页面(哪里我说错了,勿喷!谢谢) 1,请求.do的URL时直接生成对应的.htm文件,并将请求转发到该htm文件 2,自由控制某 ...

  6. Spring MVC + freemarker实现半自动静态化

    这里对freemarker的代码进行了修改,效果:1,请求.do的URL时直接生成对应的.htm文件,并将请求转发到该htm文件2,自由控制某个页面是否需要静态化原理:对org.springframe ...

  7. SpringMVC整合freeMarker实现页面静态化+SpringMVC配置多视图

    一.背景 1.什么是FreeMarker FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于 ...

  8. java静态代理实例

    package test; class ProxyTest { public static void main(String[] args) { ProxyClass proxy = new Prox ...

  9. 页面静态化技术Freemarker技术的介绍及使用实例.

    一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...

随机推荐

  1. Django中的syncdb命令

    从官方文档的意思来看,现在他已经成为migrate命令的同义词了,和migrate命令有相同的作用. Deprecated since version 1.7: This command has be ...

  2. openstack常规操作命令梳理

    之前顺利部署了openstack+kvm的虚拟化云平台管理环境,其中,涉及到不少openstack操作命令,记录如下: 查看rabbitmq 队列[root@openstack ~]#rabbitmq ...

  3. JavaScript---Ajax和函数回调,异步编程

    一 Ajax 函数的定义  :  Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),无刷新的从服务器读取数据,可以在不重新加载整个网页的情况下 ...

  4. 课程2——变量修饰关键字

    声明:本系列随笔主要用于记录c语言的常备知识点,不能保证所有知识正确性,欢迎大家阅读.学习.批评.指正!!你们的鼓励是我前进的动力.严禁用于私人目的.转载请注明出处:http://www.cnblog ...

  5. [tools]QuickPing

    一款神器 quickping 能够很快的探测出该网断分出去哪些地址.   在线的会显示绿色 在线的+有主机名的显示为亮绿色

  6. 构架高性能WEB网站的几点知识

    前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题. HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.h ...

  7. MATLAB-2015a安装

    &1 准备工作 软件和破解文件 ​软件以64位为例:链接:http://pan.baidu.com/s/1qYQQPli 密码:nc1y 解压密码:www.0daydown.com 破解文件: ...

  8. Asp.net用户控件和委托事件

    在Asp.net系统制作过程中,门户类型的网站,我们可以用DIV+CSS+JS+Ajax全部搞定,但是一旦遇到界面元素比较复杂的时候,还是UserControl比较方便一些,各种封装,各种处理,然后拖 ...

  9. WebSocket 服务器4

    Java Websocket实例 Websocket   2015-04-11 14:11:54 发布 您的评价:       4.4   收藏     6收藏 介绍 现很多网站为了实现即时通讯,所用 ...

  10. Activiti系列:带有serviceTask的或者定时启动任务的流程部署失败的原因分析

    在将两个带有serviceTask任务的流程部署到数据库的时候发现无法导入,最终分析出如下问题: 1)流程1是打算让定时启动事件可以每小时触发一次 由于原来是用 R/2015-11-01T01:00: ...