使用freemarker生成静态页面
一 说明
	需要在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生成静态页面的更多相关文章
- freeMarker生成静态页面
		项目结构图 footer.ftl des==>${f.des}<br/> <a href="http://www.baidu.com"> 百度 < ... 
- java使用freemarker生成静态html页面
		1. 模板文件static.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ... 
- Freemarker生成静态代码实例
		1.static.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http ... 
- SpringBoot 利用freemaker生成静态页面
		1. <!-- freemarker模板 --> <dependency> <groupId>org.springframework.boot</groupI ... 
- 浅谈php生成静态页面
		一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ... 
- .NET生成静态页面并分页
		因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序. 主要的原理就是替换模板里的特殊字符. 1.静态 ... 
- .net 生成 静态页面
		.net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ... 
- C#根据网址生成静态页面
		HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件 是后台管理的首页. 包含生成留言板首页,以及显示用户名,退出等功能. 根据网址生成页面的方法: boo ... 
- 用 Smarty 生成静态页面入门介绍
		why Smarty? 随着公司首页(以下简称首页)流量越来越大,最近开始考虑使用后台语言生成静态页面的技术. 我们知道,一个简单页面一般是一个 .html(或者 .htm ..shtml)后缀的文件 ... 
随机推荐
- 《Thinking In Java》---第四版 练习题答案
			百度网盘下载:https://pan.baidu.com/share/link?shareid=2111776725&uk=2869544179&app=zd 在线查看:http:// ... 
- python安装第三方库的最简单方式
			一.准备工作 (只做一次准备工作,以后都会很方便) 1. 安装pip (1)下载pip到D:\download pip下载地址:https://pypi.python.org/pypi/pip#dow ... 
- [转]php中 curl模拟post发送json并接收json
			本文转自:https://blog.csdn.net/pangchengyong0724/article/details/52103962 本地模拟请求服务器数据,请求数据格式为json,服务器返回数 ... 
- c# 创建,加载,修改XML文档
			using System.Xml.Linq; static void Main(string[] args) { XDocument xDocument = new XDocument(new XEl ... 
- mongodb "Element '{0}' does not match any field or property of class" 异常的解决方法
			在序列化的对象上增加 [BsonIgnoreExtraElements] 
- Hibernate入门(十一)多对多案例
			Hibernate多对多案例 1.用户对角色 DROP TABLE IF EXISTS emp_role; DROP TABLE IF EXISTS employee; DROP TABLE IF E ... 
- class example of C++
			#include <iostream> using namespace std; class Rectangle { int width, height; public: ... 
- No.3 数组中重复的数字 (P39)
			题目1:找出数组中重复的数字 [题目描述] 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个 ... 
- HTML标签笔记
			换行符:<br/> 首部: <!DOCTYPE>: 说明html文档使用的标准, 在HTML5中仅为 <!DOCTYPE html>1.头标签 <head&g ... 
- C#如何通过属性名称反射出属性本身
			A a = new A(); Type t = typeof(A); var v1 = t.GetField("n").GetValue(a);//获取字段值,你的类A.n是字段, ... 
