一 说明
需要在spring mvc项目中加入下列包:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
</dependency>
如果你还想使用freemarker实现表现层,那么还需要导入下列包:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework.version}</version>
</dependency>
二 实现工具类

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;

/**
* 文件名:CreateStaticHtml.java
*/
public class CreateStaticHtml {

private String encoding;//模板文件编码

public CreateStaticHtml(){
this.encoding = "UTF-8";
}

public CreateStaticHtml(String encoding){
this.encoding = encoding;
}

/**
* 创建getTemplate方法用于获取freemarker的模板Template 对象
*
* @param cfg
* @param name
* @return
* @throws IOException Template
*/
private Template getTemplate(Configuration cfg, String name)
throws IOException {
cfg.setDefaultEncoding(encoding);
cfg.setNumberFormat("#");
return cfg.getTemplate(name);
}

/**
* 创建doWirte方法用于往磁盘上写生成好的文件
*
* @param t
* @param path
* @param req
*/
private void doWirte(Template t, String path, Map<String, Object> req) {
try {
File staticPage = new File(path);
System.out.println(staticPage.getAbsolutePath());
if (!staticPage.exists())
staticPage.createNewFile();
Writer wt = new OutputStreamWriter(
new FileOutputStream(staticPage), encoding);
t.setEncoding("UTF-8");
t.process(req, wt);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 此方法用于生成静态页
*
* @param args
* 模板页面参数
* @param templatePath
* 模板页面目录
* @param templateFileName
* 模板文件名
* @param staticPagename
* 生成静态文件名(包含路径)
* void
* @author:彭国卿
* @date:2013-5-17
*/
public void createStaticPage(Map<String, Object> args, String templatePath,
String templateFileName, String staticPagename) {
try {
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File(templatePath));
Template tIndex = getTemplate(cfg, templateFileName);
doWirte(tIndex, staticPagename, args);
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "静态页面第一次生成测试");

new CreateStaticHtml().createStaticPage(map,"E:/penggq-tec/src/main/webapp/WEB-INF/ftls/freemarker/","test.ftl","E:/penggq-tec/src/main/webapp/WEB-INF/ftls/freemarker/test.htm");
}
}

三 使用
在ftl模板中,使用标签可以将数据替换,但是不能使用jsp标签
四 其他
上文生成静态文件的工具类可以自行修改,丰富内容

使用freemarker生成静态页面的更多相关文章

  1. freeMarker生成静态页面

    项目结构图 footer.ftl des==>${f.des}<br/> <a href="http://www.baidu.com"> 百度 < ...

  2. java使用freemarker生成静态html页面

    1. 模板文件static.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...

  3. Freemarker生成静态代码实例

    1.static.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http ...

  4. SpringBoot 利用freemaker生成静态页面

    1. <!-- freemarker模板 --> <dependency> <groupId>org.springframework.boot</groupI ...

  5. 浅谈php生成静态页面

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...

  6. .NET生成静态页面并分页

    因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序. 主要的原理就是替换模板里的特殊字符. 1.静态 ...

  7. .net 生成 静态页面

    .net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ...

  8. C#根据网址生成静态页面

    HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件 是后台管理的首页. 包含生成留言板首页,以及显示用户名,退出等功能. 根据网址生成页面的方法: boo ...

  9. 用 Smarty 生成静态页面入门介绍

    why Smarty? 随着公司首页(以下简称首页)流量越来越大,最近开始考虑使用后台语言生成静态页面的技术. 我们知道,一个简单页面一般是一个 .html(或者 .htm ..shtml)后缀的文件 ...

随机推荐

  1. YARN集群的mapreduce测试(四)

    将手机用户使用流量的数据进行分组,排序: 测试准备: 首先同步时间,然后master先开启hdfs集群,再开启yarn集群:用jps查看: master上: 先有NameNode.SecondaryN ...

  2. OpenCV入门之获取验证码的单个字符(字符切割)

    介绍   在我们日常上网注册账号以及制作网络爬虫时,经常会遇到奇奇怪怪的验证码,有些容易,有些连人眼都无法辨识.于是,大牛们想到了用深度学习的方法来破解验证码,对于一般的验证码往往能出奇制胜,取得不俗 ...

  3. [转]angular 禁止缓存

    本文转自:https://www.cnblogs.com/jonney-wang/p/9797906.html angular 单页面开发,会存在和管理很多HTML和JS文件,缓存有时是个麻烦. 在开 ...

  4. [转]Angular4 数据请求 POST、GET

    本文转自:https://blog.csdn.net/dailuwen/article/details/79375980 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  5. Tri Tiling(hdu1143)

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. Oracle+mybatis实现对数据的简单增删改查

    第一步:--创建一个表空间:名字叫 mybatis,建在D盘下的date文件夹下: 第二步:创建用户,名字叫  lisi  ,密码为  :123456 第三步:给用户授权: 第四步:我们在    li ...

  7. 谈谈 final finally finalize 区别

    声明 本篇所涉及的提问,正文的知识点,全都来自于杨晓峰的<Java核心技术36讲>,当然,我并不会全文照搬过来,毕竟这是付费的课程,应该会涉及到侵权之类的问题. 所以,本篇正文中的知识点, ...

  8. 微信小程序调用地图选取位置后返回信息

    先看一下wxml的代码,绑定个事件! <view class='carpool_data_all'> <view class='aa'> <text>*出发地< ...

  9. Testlink1.9.17使用方法(第十章 关键词使用)

    第十章 关键词使用:按关键词来搜索用例 QQ交流群:585499566 一. 创建关键字 单击主页“产品管理”区域-->点击[关键字管理]按钮-->创建一个新的关键字.关键字的内容包括:关 ...

  10. CSS之表格边框合并、兄弟标签外边距合并、父子标签的外边距合并

    本文内容: 表格边框合并 兄弟标签外边距合并 父子标签的外边距合并 首发日期:2018-05-01 表格边框合并: 发生情况: 当设置了cellpadding="0" cellsp ...