国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > Java的FreeMarker模板引擎的幾種模板加載方式

Java的FreeMarker模板引擎的幾種模板加載方式

時間:2023-06-12 09:45:01 | 來源:網(wǎng)站運營

時間:2023-06-12 09:45:01 來源:網(wǎng)站運營

Java的FreeMarker模板引擎的幾種模板加載方式:

1. 介紹

1.1 介紹

上一課福哥帶著大家學(xué)習(xí)了Java的FreeMarker模板引擎的使用技巧,其實FreeMarker除了可以通過指定模板根目錄的方式加載模板外,還有非常多的個性化的模板加載方式,在不同的場合下使用適合的加載方式會讓我們編寫代碼更加方便,同時運行效率也會更高。

FreeMarker支持的模板加載方式包括字符串加載(StringTemplateLoader)、類加載(ClassTemplateLoader)、文件加載(FileTemplateLoader)、網(wǎng)址加載(URLTemplateLoader)、Webapp加載(WebappTemplateLoader)以及復(fù)合加載(MultiTemplateLoader)這么多種方式,今天福哥就帶著大家一一學(xué)習(xí)一下。

2. 目錄加載

這是最簡單也最直觀的方式,上一課福哥給大家講解的教程就是采用這種方式。

首先通過Configuration對象的setDirectoryForTemplateLoading方法設(shè)置模板根目錄。

然后通過Configuration對象的getTemplate方法指定具體模板文件。

Configuration configuration = new Configuration(Configuration.getVersion());Template template;Map data = new LinkedHashMap();StringWriter stringWriter = new StringWriter();configuration.setDirectoryForTemplateLoading(new File(System.getProperty("user.dir") + "/src/main/resources/template"));template = configuration.getTemplate("test.ftl");

3. 字符串加載

這種方式就是通過字符串描繪模板文件內(nèi)容的方式,比較適用于簡單的頁面的情況,例如:錯誤提示頁面、跳轉(zhuǎn)中轉(zhuǎn)頁面等等。

3.1 StringTemplateLoader

示例:使用StringTemplateLoader實現(xiàn)一個跳轉(zhuǎn)頁面的模板。

Configuration configuration = new Configuration(Configuration.getVersion());StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();Template template;Map data = new LinkedHashMap();StringWriter stringWriter = new StringWriter();stringTemplateLoader.putTemplate("test.ftl", "<meta http-equiv=/"refresh/" content=/"0; url=${url}/" />" + "<script>" + "document.location='${url}';" + "</script>");configuration.setTemplateLoader(stringTemplateLoader);template = configuration.getTemplate("test.ftl");data.put("url", "https://tongfu.net/");template.process(data, stringWriter);return stringWriter.toString();

4. 類加載

類加載方式就是指定一個類,這個類的定義文件所在的目錄就是模板文件的根目錄,這樣的好處是可以將模板文件分散開來部署,避免集中部署帶來的沖突問題。

4.1 ClassTemplateLoader

示例:使用類加載方式調(diào)用控制器類所在目錄下面的模板輸出網(wǎng)頁。

Configuration configuration = new Configuration(Configuration.getVersion());ClassTemplateLoader classTemplateLoader = new ClassTemplateLoader(DemoController.class, "template/");Template template;Map data = new LinkedHashMap();StringWriter stringWriter = new StringWriter();configuration.setTemplateLoader(classTemplateLoader);template = configuration.getTemplate("test.ftl");data.put("url", "https://tongfu.net/");template.process(data, stringWriter);return stringWriter.toString();不過在SpringBoot項目里面這樣的設(shè)計似乎不能正常運行,只能放到resources目錄下面,然后通過在路徑前面增加“/”指明從resources目錄開始查找,這樣也就和指定什么類沒有關(guān)系了。

示例:使用類加載方式調(diào)用resources/template/test.ftl模板輸出網(wǎng)頁。

Configuration configuration = new Configuration(Configuration.getVersion());ClassTemplateLoader classTemplateLoader = new ClassTemplateLoader(DemoController.class, "/template/");Template template;Map data = new LinkedHashMap();StringWriter stringWriter = new StringWriter();configuration.setTemplateLoader(classTemplateLoader);template = configuration.getTemplate("test.ftl");data.put("url", "https://tongfu.net/");template.process(data, stringWriter);return stringWriter.toString();

5. 文件加載

這里雖然說的是文件加載,但其實就是目錄加載,只不過是通過FileTemplateLoader指定模板文件的根目錄。

5.1 FileTemplateLoader

示例:使用文件加載方式調(diào)用resources/template/test.ftl模板輸出網(wǎng)頁。

Configuration configuration = new Configuration(Configuration.getVersion());FileTemplateLoader fileTemplateLoader = new FileTemplateLoader(new File(System.getProperty("user.dir") + "/src/main/resources/template/"));Template template;Map data = new LinkedHashMap();StringWriter stringWriter = new StringWriter();configuration.setTemplateLoader(fileTemplateLoader);template = configuration.getTemplate("test.ftl");data.put("url", "https://tongfu.net/");template.process(data, stringWriter);return stringWriter.toString();

6. 網(wǎng)址加載

網(wǎng)址加載就是通過一個遠(yuǎn)程的網(wǎng)址讀取模板文件的內(nèi)容,下載完成后再進(jìn)行整合渲染的方式。

這種方式可以集中管理項目的模板文件,需要更改的時候只需要改一處就可以了。

6.1 URLTemplateLoader

由于這種加載方式需要搭建一個遠(yuǎn)程環(huán)境,所以福哥就偷個懶不提供示例代碼了!

7. Webapp加載

Webapp加載就是通過ServletContext.getResource獲得模板文件的內(nèi)容。

7.1 WebappTemplateLoader

由于這種加載方式需要搭建一個發(fā)布環(huán)境,所以福哥就偷個懶不提供示例代碼了!

8. 復(fù)合加載

復(fù)合加載就是可以設(shè)置一堆加載器,F(xiàn)reeMarker會逐個嘗試,失敗一個就換下一個,直到成功一個,或者全部失敗才會結(jié)束。

8.1 MultiTemplateLoader

示例:福哥設(shè)置了兩個FileTemplateLoader加載器,第一個加載器下面沒有test.ftl,第二個加載器下面有test.ftl。

Configuration configuration = new Configuration(Configuration.getVersion());MultiTemplateLoader multiTemplateLoader = new MultiTemplateLoader(new TemplateLoader[]{ new FileTemplateLoader(new File(System.getProperty("user.dir") + "/src/main/resources/abc/")), new FileTemplateLoader(new File(System.getProperty("user.dir") + "/src/main/resources/template/"))});Template template;Map data = new LinkedHashMap();StringWriter stringWriter = new StringWriter();configuration.setTemplateLoader(multiTemplateLoader);template = configuration.getTemplate("test.ftl");data.put("url", "https://tongfu.net/");template.process(data, stringWriter);return stringWriter.toString();

9. 總結(jié)

今天福哥帶著童鞋們將Java的模板引擎FreeMarker的幾種模板加載方式都學(xué)習(xí)了一遍,相信經(jīng)過今天的課程大家在使用FreeMarker做項目的時候就會得心應(yīng)手了~~






關(guān)鍵詞:模板,方式,引擎

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉