使用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)后缀的文件 ...
随机推荐
- Jquery ajax, Axios, Fetch区别之我见(转载)
来源:https://segmentfault.com/a/1190000012836882 引言 前端技术真是一个发展飞快的领域,我三年前入职的时候只有原生XHR和Jquery ajax,我们还曾被 ...
- [android] 采用pull解析xml文件
/***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...
- 易宝支付Demo,生产中封装成简洁的代付接口,不用request如何获取项目运行时的真实路径
最近项目在做融360引流,涉及到了易宝支付的代扣和代付.易宝官方给出的demo只能简单运行,而且都是通过form表单的形式提交,返回XML格式.同时接口代码都写在了JSP中看起来不友好.项目在生成中想 ...
- (6)Microsoft office Word 2013版本操作入门_文件封面,页首,页尾
1插入封面: 1.1光标移动到首段,按住 Ctrl+Enter键可以插入一个新页面. 1.2 插入--->封面 可以在封面插入一个文件封面,里面的图片可以自己修改,文字标题也可以自己修改. 1. ...
- 新浪微博登陆以及发送微博(附python源码)
原文链接(本人):https://blog.csdn.net/A5878989/article/details/76275855 说明 本文主要记录分析新浪微博登陆以及发送文字和图片微博的详细过程 分 ...
- spring-framework-中文文档一:IoC容器、介绍Spring IoC容器和bean
5. IoC容器 5.1介绍Spring IoC容器和bean 5.2容器概述 本章介绍Spring Framework实现控制反转(IoC)[1]原理.IoC也被称为依赖注入(DI).它是一个过程, ...
- jquery中找到元素在数组中位置,添加或者删除元素的新方法
一:查找元素在数组中的位置 jQuery.inArray()函数用于在数组中搜索指定的值,并返回其索引值.如果数组中不存在该值,则返回 -1. jQuery.inArray( value, array ...
- Offer选择与总结
今天是2015.11.23,我估计这也是继高考.保研这些决定与选择之后,又一个比较重大的人生选择.最终选择了去微信支付,按钱来说比最高的offer少五万,其实挺心疼的.但是从发展和部门核心程度来讲,应 ...
- php生成xml数据
1.php生成xml数据一般有2种方式, 一个是组装字符串,另一个就是使用php内置的系统类 2.使用php内置类生成xml数据 3.拼装字符串生成xml数据 public function stat ...
- C#Thread的方法、Start()、Sleep(int)、Abort()、Suspend()、Resume()
Thread类有几个至关重要的方法 Start():启动线程: Sleep(int):静态方法,暂停当前线程指定的毫秒数: Abort():通常使用该方法来终止一个线程: Suspend():该方法并 ...