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. 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

    Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...

  2. mantis安装

    curl -O http://jaist.dl.sourceforge.net/project/mantisbt/mantis-stable/1.2.19/mantisbt-1.2.19.tar.gz ...

  3. java 20 - 9 带有缓冲区的字节输出流和字节输入流

    由之前字节输入的两个方式,我们可以发现,通过定义数组读取数组的方式比一个个字节读取的方式快得多. 所以,java就专门提供了带有缓冲区的字节类: 缓冲区类(高效类) 写数据:BufferedOutpu ...

  4. PHP mcrypt加密扩展使用总结

    在开发中,很多时候我们在前后端交互中需要对一些敏感数据进行一定的加密.PHP中有提供了mcrypt的这样一个加密扩展实现对数据的加密解密. 一.mcrypt扩展的安装 在低版本的PHP中需要在配置文件 ...

  5. easyui datagrid 多行删除问题

    问题: var selected = $("#tbList").datagrid("getSelections"); selected的选中项 会包含上次已删掉 ...

  6. C语言 数组做函数参数不传数组个数的遍历方法

    //数组做函数参数不传数组个数的遍历方法 #include<stdio.h> #include<stdlib.h> #include<string.h> void ...

  7. jquery 获取select框选中的值示例一则

    $('#MODULE_TYPE').change(function(){ var moduleType=$(this).children('option:selected').val();//这就是s ...

  8. Caffe学习系列(14):初识数据可视化

    //   首先将caffe的根目录作为当前目录,然后加载caffe程序自带的小猫图片,并显示. 图片大小为360x480,三通道 In [1]: import numpy as np import m ...

  9. Word 文档插入时间日期禁止自动更新

    前些天写了点总结并插入时间和日期,记得勾掉了那个自动更新的,但是刚才打开时发现当时的日期和时间变成现在的了,我就纳闷了,然后我去看那插入日期和时间的那个框,里面确实没有勾选自动更新,于是百度, 百度都 ...

  10. html:关于表单功能的学习

    比如我在某jsp页面中写了如下表单: <form action="/MavenWeb/TestFormPost" method="get">   & ...