国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

FreeMarker-TemplateLoader

2019-11-14 22:47:46
字體:
供稿:網(wǎng)友
FreeMarker-TemplateLoader

java中不乏優(yōu)秀的模板引擎,Velocity,mvel,FreeMarker等。在構(gòu)建框架的時候,通常可以拿來即用,但我們需要控制它。最近需要一個數(shù)據(jù)準(zhǔn)備的框架,便選擇了FreeMarker,F(xiàn)reeMarker使用起來很簡單,data+template=out.今天主要寫一下其中template加載組件TemplateLoader

TemplateLoader的實(shí)現(xiàn)

作為一個模板文件加載的抽象,自然不能限制模板來自何方,在FreeMarker中由幾個主要的實(shí)現(xiàn)類來體現(xiàn),這些TemplateLoader是可以獨(dú)立使用的,Webapp需要Servlet環(huán)境。當(dāng)然你可以實(shí)現(xiàn)自己的TemplateLoader.

  • StringTemplateLoader 直接將內(nèi)存中的String對象放入并使用
  • FileTemplateLoader 本地文件目錄
  • ClassTemplateLoader ClassPath 加載
  • WebaPPTemplateLoader ServletContext
  • MultiTemplateLoader 多個TemplateLoader的疊加,順序按照數(shù)組的順序優(yōu)先加載
StringTemplateLoader

剛開始總覺得StringTemplateLoader簡單,其實(shí)挺麻煩,而且也無大用。

@Testpublic void testStringTL() throws IOException {StringTemplateLoader stl = new StringTemplateLoader();String template = "${key}";stl.putTemplate("hello", template);Object source = stl.findTemplateSource("hello");Reader reader = stl.getReader(source, "utf-8");String dest = IOUtils.toString(reader);Assert.assertEquals(template, dest);}
MultiTemplateLoader

TemplateLoader是可以多種類型,同種類型組合起來使用的,查詢順序按照數(shù)組的順序優(yōu)先。

@Testpublic void testMultiTL() throws IOException {TemplateLoader ctl = new ClassTemplateLoader(TemplateLoaderTest.class,"/");TemplateLoader ftl1 = new FileTemplateLoader(new File(System.getPRoperty("user.dir")));MultiTemplateLoader mtl = new MultiTemplateLoader(new TemplateLoader[] {ftl1,ctl  });Object source = mtl.findTemplateSource("test.ftl");Reader reader = mtl.getReader(source, "utf-8");String dest = IOUtils.toString(reader);Assert.assertEquals("${hello}", dest);}
通常在Configuration中使用,才能方便的處理FreeMarker的表達(dá)式
@Testpublic void testInConfiguration() throws IOException {Configuration configuration = new Configuration(Configuration.VERSION_2_3_21);configuration.setDefaultEncoding("utf-8");TemplateLoader ctl = new ClassTemplateLoader(TemplateLoaderTest.class,"/");TemplateLoader ftl1 = new FileTemplateLoader(new File(System.getProperty("user.dir")));MultiTemplateLoader mtl = new MultiTemplateLoader(new TemplateLoader[] {ftl1,ctl });configuration.setTemplateLoader(mtl);//configuration.getTemplate("test.ftl").process(data, out);}
其它緩存

模板加載通常是耗費(fèi)資源的,默認(rèn)是開啟緩存的,緩存的實(shí)現(xiàn),是否使用緩存取決于你

configuration.setCacheStorage(new freemarker.cache.NullCacheStorage());configuration.clearTemplateCache();

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 德惠市| 平遥县| 清流县| 德州市| 惠水县| 汽车| 祁连县| 如东县| 双鸭山市| 什邡市| 叶城县| 措美县| 同德县| 常德市| 渝中区| 平安县| 田林县| 凭祥市| 印江| 改则县| 吉木萨尔县| 隆尧县| 福贡县| 浮梁县| 高陵县| 天气| 伊金霍洛旗| 甘孜县| 石景山区| 乌审旗| 阳江市| 泸西县| 平凉市| 视频| 石河子市| 高碑店市| 乃东县| 图片| 黔西| 沁水县| 绥德县|