Atitit freemarker模板總結 D:\workspace\springboothelloword\src\com\attilax\util\TempleteFreemarkerUtil.
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();
}
}