Atitit freemarker模板总结
D:\workspace\springboothelloword\src\com\attilax\util\TempleteFreemarkerUtil.java
package com.attilax.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import com.google.common.collect.Maps;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class TempleteFreemarkerUtil {
public static void main(String[] args) throws IOException, TemplateException {
String sql = "select distinst*from ${name} .";
Map m_varRoot = Maps.newLinkedHashMap();
m_varRoot.put("name", "tabled");
String analysisTemplate = parseTmplt(sql, m_varRoot);
System.out.println(analysisTemplate);
}
public static String parseTmplt(String tmplt, Map varRoot) throws IOException, TemplateException {
String tmplt_dir = "D:\\000000\\";
// new File() string byte转file是不存在的,,因为ipputstream读取file是个native方法
java.util.Random r = new java.util.Random();
String tmpleteId = String.valueOf(r.nextInt());
File file = new File(tmplt_dir + tmpleteId);
FileUtils.writeStringToFile(file, tmplt);
String analysisTemplate = analysisTemplate(tmplt_dir, tmpleteId, "gbk", varRoot);
return analysisTemplate;
}
/**
* @param templateName
* 模板文件名称
* @param templateEncoding
* 模板文件的编码方式
* @param root
* 数据模型根对象
* @return
* @throws IOException
* @throws TemplateException
*/
public static String analysisTemplate(String pathname, String templateName, String templateEncoding, Map<?, ?> root)
throws IOException, TemplateException {
/** 创建Configuration对象 */
Configuration config = new Configuration();
/** 指定模板路径 */
// = "templates";
File file = new File(pathname);
/** 设置要解析的模板所在的目录,并加载模板文件 */
config.setDirectoryForTemplateLoading(file);
/** 设置包装器,并将对象包装为数据模型 */
config.setObjectWrapper(new DefaultObjectWrapper());
config.setStrictSyntaxMode(false);
/** 获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致 */
Template template = config.getTemplate(templateName, templateEncoding);
/** 合并数据模型与模板 */
StringWriter stringWriter = new StringWriter();
template.process(root, stringWriter);
stringWriter.close();
return stringWriter.toString();
}
}
D:\0workspace\AtiPlatf_cms\src\com\attilax\rails\FreeMarkertUtil.java
package templete;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringWriter;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import com.google.common.collect.Maps;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class freemarkerDemo {
public static void main(String[] args) throws IOException, TemplateException {
String sql="select distinst*from ${name} .";
// new File() string byte转file是不存在的,,因为ipputstream读取file是个native方法
File file = new File("D:\\000000\\sql2.txt");
FileUtils.writeStringToFile(file, sql);
Map m=Maps.newConcurrentMap();m.put("name", "tabled");
System.out.println(analysisTemplate("D:\\000000\\","sql2.txt","gbk",m));
}
/** @param templateName 模板文件名称
* @param templateEncoding 模板文件的编码方式
* @param root 数据模型根对象
* @return
* @throws IOException
* @throws TemplateException */
public static String analysisTemplate(String pathname, String templateName, String templateEncoding, Map<?, ?> root ) throws IOException, TemplateException {
/** 创建Configuration对象 */
Configuration config = new Configuration();
/** 指定模板路径 */
// = "templates";
File file = new File(pathname);
/** 设置要解析的模板所在的目录,并加载模板文件 */
config.setDirectoryForTemplateLoading(file);
/** 设置包装器,并将对象包装为数据模型 */
config.setObjectWrapper(new DefaultObjectWrapper());
config.setStrictSyntaxMode(false);
/** 获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致 */
Template template = config.getTemplate(templateName, templateEncoding);
/** 合并数据模型与模板 */
StringWriter stringWriter = new StringWriter();
template.process(root,stringWriter);
stringWriter.close();
return stringWriter.toString();
}
}