?
FreeMarker是一個(gè)模板引擎,一個(gè)基于模板生成文本輸出的通用工具,使用純Java編寫
???????? FreeMarker被設(shè)計(jì)用來(lái)生成HTML Web頁(yè)面,特別是基于MVC模式的應(yīng)用程序
???????? 雖然FreeMarker具有一些編程的能力,但通常由Java程序準(zhǔn)備要顯示的數(shù)據(jù),由FreeMarker生成頁(yè)面,通過(guò)模板顯示準(zhǔn)備的數(shù)據(jù)(如下圖)
???????? FreeMarker不是一個(gè)Web應(yīng)用框架,而適合作為Web應(yīng)用框架一個(gè)組件
???????? FreeMarker與容器無(wú)關(guān),因?yàn)樗⒉恢繦TTP或Servlet;FreeMarker同樣可以應(yīng)用于非Web應(yīng)用程序環(huán)境
???????? FreeMarker更適合作為Model2框架(如Struts)的視圖組件,你也可以在模板中使用JSP標(biāo)記庫(kù)
???我們可以使用freemaker制作需要生成的靜態(tài)頁(yè)面樣式。然后可利用動(dòng)態(tài)綁定數(shù)據(jù),將數(shù)據(jù)綁定到
一個(gè)simpleHash中后,使用template.process()生成一張靜態(tài)頁(yè)面。或者其他頁(yè)面的。
然后寫到文件系統(tǒng)中。利用這種機(jī)制我們就可以輕松的實(shí)現(xiàn)模板生成靜態(tài)頁(yè)面了。
public static String xmlGenerate(TableDecorator table)throws Exception{
??StringWriter writer = new StringWriter();
??FreemakerEngine engine = FreemakerEngine.getInstance();
??freemarker.template.Template template = engine.getTemplate("hibernate.ftl");
??SimpleHash model = new SimpleHash();
??model.put("table", table);
??template.process(model, writer);
??ByteArrayOutputStream os = new ByteArrayOutputStream();
??os.write(writer.getBuffer().toString().getBytes());
??os.flush();
??os.close();
??return new String(os.toByteArray());
?}