⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 freemarkertool.java

📁 Ajax评论系统(结合Prototype+Freemarker分页)
💻 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 + -