package com.nomen.ntrain.base.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;
import javax.servlet.ServletContext;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.views.freemarker.FreemarkerManager;
import com.nomen.ntrain.util.SpringBeanUtils;
import freemarker.template.Configuration;
import freemarker.template.Template;
/**
* 工具类 - HTML静态文件生成
* ============================================================================
*/
public class HtmlUtil {
private SpringBeanUtils springBeanUtils;
/**
* 根据ftl模板文件路径、生成HTML文件路径、Map数据生成HTML文件
*
* @param ftlPath
* ftl模板文件路径
*
* @param htmlPath
* 生成HTML文件路径
*
* @param data
* Map数据
*
*/
public void build(String ftlPath, String htmlPath, Map<String, Object> data) {
ServletContext servletContext = ServletActionContext.getServletContext();
FreemarkerManager freemarkerManager = (FreemarkerManager)springBeanUtils.getBean("freemarkerManager");
try {
Configuration freemarkerCfg = freemarkerManager.getConfiguration(servletContext);
Template template = freemarkerCfg.getTemplate(ftlPath);
String htmlDirectory = StringUtils.substringBeforeLast(htmlPath, "/");
String htmlName = StringUtils.substringAfterLast(htmlPath, "/");
File realDirectory = new File(servletContext.getRealPath(htmlDirectory));
if (!realDirectory.exists()) {
realDirectory.mkdirs();
}
File htmlFile = new File(realDirectory + "/" + htmlName);
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), "GBK"));
//System.out.println(realDirectory);
//ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("i18n");
//ResourceBundleModel rsbm = new ResourceBundleModel(RESOURCE_BUNDLE, new BeansWrapper());
data.put("bundle", null);
data.put("base", servletContext.getServletContextName());
template.process(data, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 根据File对象、过期时间删除所有过期文件
*
*/
public static void deleteExpirationFile(File file, long expirationTime) {
File[] fileArray = file.listFiles();
for (File f : fileArray) {
if (f.isFile()) {
Long lastModifiedTime = f.lastModified();
if (lastModifiedTime < expirationTime) {
f.delete();
}
} else if (f.isDirectory()) {
deleteExpirationFile(f, expirationTime);
}
}
}
public SpringBeanUtils getSpringBeanUtils() {
return springBeanUtils;
}
public void setSpringBeanUtils(SpringBeanUtils springBeanUtils) {
this.springBeanUtils = springBeanUtils;
}
}
分享到:
相关推荐
PHP静态文件生成类 使用方法如下: <?php $s=new CreateHtml(); $s->start(); ?> <html> <body> asdfasdfasdfasdfasdfasdfasdfasdfasdf adfasdfasdf ...
php生成静态文件 php生成html文件 使用ob技术
BBSGood提供的通用HTML静态文件生成器。 使用说明: 该程序使用方便,修改配置上传后,可立即使用。 该程序能将目标的动态访问地址生成HTML文件,从而提高访问速度,对于目前还在以如index.asp的动态页面为首页的...
chrome浏览器打开axure生成的HTML静态文件页面 已升级manifest version 3版本 第一步:解压得到一个axure-chrome-extension的文件夹。 第二步:打开Google浏览器,在地址栏中输入chrome://extensions/ 或者右上角...
以前发布过过asp生成静态文件的,那是用模板替换的方法实现的, 今天这个是用XMLHttp的方法来实现的,页面很简单,直接执行html.asp文件就可以了, 再次强调这只是个方法,不是完整的ASp生成html的网站,是供网友...
用于生成静态的html、静态缓存文件的类,下载下来直接可以运行,我现在用的是生成缓存,会自动根据url的不同或者参数的不同生成的缓存文件,希望这个小程序能给大家带来方便。。。
将动态的数据页面生成特定名称指定目录下的html等其他类型的静态页面
ASP生成html静态网页文件 v2.0 基于:ASP生成html静态网页文件 v1.1 升级版
-------------------------------ASP生成HTML静态文件说明--------------------------------------- 一 主要ASP文件 conn.asp //数据库连接 html_file.asp //用于根据条件生成文件夹及文件 ...
现在生成静态常用方法有两种:一是用模板替换(此例),二是用XMLHttp组件读取数据保存为html静态文件。另外一种用XMLHttp组件的,我还没有写示例,有兴趣的可以看看我用xmlHttp做的全静态门户站,
比较完整的一套生成引擎源码,动态编辑新闻内容,发布生成静态HTML,自己整理了一套源码,仅供学习参考
ASP生成静态Html文件技术杂谈.pdf
ASP生成静态Html文件技术,里面用到的几个方法,值得参考
这是一个网站html静态页生成程序(asp代码),将该asp文件上传至网站根目录下访问和使用即可!打开该asp页面即可一键生成整站html静态页。
把jsp、文件生成Html静态文件 内附有代码 不懂可以留言
ASP生成静态Html文件 ASP生成静态Html文件 方法1
simply-static是一个简单的一键生成全站静态html文件的wordpress插件,支持生成或不生成指定url的html文件,生成文件的资源路径可选相对路径、绝对路径和脱机文件,html文件可以直接生成在服务器或zip压缩包下载。...
Asp.net生成静态文件示例源码(两种途径) <br>Asp.net生成静态文件(根据时间自动命名保持,默认扩展名是htm可以自行修改)。 <br>通过收入内容替换模板或者url地址两种方式进行静态文件的生成 <br>...
清水阁XMLHttp实现Asp生成HTML静态文件(带进度条) 清水阁出品,使用XMLHttp对象实现Asp生成HTML静态文件,支持生成进度条显示,以前发布过asp生成静态文件的模块例子,不过那是基于模板替换的方法实现的,这个是用...
.NET生成静态文件(HTML)的三种方法