1. 程式人生 > >Atitit freemarker模板總結 D:\workspace\springboothelloword\src\com\attilax\util\TempleteFreemarkerUtil.

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();

 

 

}

 

}