📄 freemarkertool.java
字号:
package ajax.util.freemarker;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import javax.servlet.jsp.PageContext;
import java.util.Map;
//import freemarker.core.Environment;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import ajax.util.Config;
/**
* Freemarker工具类
*
* @author 陈智聪(<a href="mailto:bugie@163.com">bugie@163.com</a>)
* @version 2.0 - 2009/02/10
*/
public class FreemarkerTool {
/**
* 构造函数
*/
public FreemarkerTool() {
}
/**
* 创建一系列目录
* @param dir 目录字符串(前面为"/" 或 "//" 或者空,都代表根目录)
* @return boolean 是否成功创建
*/
public boolean mkDirs(String dir) throws IOException {
String dir_str = "";
boolean flag = false;//标志
if (!dir.startsWith("/") || !dir.startsWith("//"))
dir_str = Config.Site_ROOT + "//" + dir;
else
dir_str = Config.Site_ROOT + dir;
File dirs = new File(dir_str);
if (!dirs.exists()) {
dirs.mkdirs();
flag = true;//标志置真
} else {
//System.err.println("目录:" + dir + " 已存在!");
}
return flag;
}
/**
* 渲染输出
* @param tplFileName 模版名称(相对模板存放的基路径),如:"/news_detial.html","/admin/login.tpl"
* @param map 用于处理模板的属性Object映射
* @param pageContext PageContext对象
*/
@SuppressWarnings("static-access")
public void mergeFile(String tplFileName, Map<String, Object> map, PageContext pageContext) {
try {
Writer out = pageContext.getResponse().getWriter();
Template t = FreemarkerConfig.init().cfg.getTemplate(tplFileName);//获取模板
t.setEncoding("utf-8");
//Environment env = t.createProcessingEnvironment(map, out);
t.process(map, out);//合成并输出
out.flush();
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 静态生成文件
* @param tplFileName 模版名称(相对模板存放的基路径),如:"/news_detial.html","/admin/login.tpl"
* @param map 用于处理模板的属性Object映射
* @param outDir 要生成的静态文件的路径,相对网站根路径,例如 "/html/2008/10/05"
* @param outFileName 要生成的文件名,如:"123.htm","pic.xml"
*/
@SuppressWarnings("static-access")
public void makeStaticFile(String tplFileName, Map<String, Object> map, String outDir, String outFileName) {
//保证输出目录存在
try {
mkDirs(outDir);
} catch (IOException e) {
e.printStackTrace();
}
if(!outDir.endsWith("/"))
outDir = outDir + "/";
String out_file = Config.Site_ROOT + outDir + outFileName;//输出目的文件路径
try {
//这里注意,强制输出编码类型,防止乱码
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(out_file), "utf-8"));
Template t = FreemarkerConfig.init().cfg.getTemplate(tplFileName);//获取模板
t.setEncoding("utf-8");
//Environment env = t.createProcessingEnvironment(map, out);
t.process(map, out);//合成并输出
out.flush();
out.close();
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除静态文件
* @param fileName 文件名(必须相对于根目录)
* @return
*/
public boolean delFile(String fileName) {
boolean flag = false;
if (!fileName.startsWith("/") || !fileName.startsWith("//"))
fileName = "/" + fileName;
String file_name = Config.Site_ROOT + fileName;
File file = new File(file_name);
if (file.exists()) {
file.delete();
flag = true;
}
return flag;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -