## 1.4 模板加載器
[TOC]
### 1.4.1 模板資源加載器
資源加載器是根據String值獲取Resource實例的工場類,同時資源加載器還要負責響應模板引擎詢問模板是否變化的調用。對于新手來說,無需考慮模板資源加載器如何實現,只需要根據自己場景選擇系統提供的三類模板資源加載器即可
### 1.4.2 字符串模板加載器
在創建GroupTemplate過程中,如果傳入的是StringTemplateResourceLoader,則允許通過調用gt.getTemplate(String template)來獲取模板實例對象,如2.1所示
### 1.4.3 文件資源模板加載器
更通常情況下,模板資源是以文件形式管理的,集中放在某一個文件目錄下(如webapp的模板根目錄就可能是WEB-INF/template里),因此,可以使用FileResourceLoader來加載模板實例,如下代碼:
```java
String root = System.getProperty("user.dir")+File.separator+"template";
FileResourceLoader resourceLoader = new FileResourceLoader(root,"utf-8");
Configuration cfg = Configuration.defaultConfiguration();
GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
Template t = gt.getTemplate("/s01/hello.txt");
String str = t.render();
System.out.println(str);
```
第1行代碼指定了模板根目錄,即位于項目工程下的template目錄 第2行構造了一個資源加載器,并指定字符集為UTF-8 (也可不指定,因為配置文件默認就是UTF-8); 第5行通過模板的相對路徑/s01/hello.txt來加載模板
### 1.4.4 Classpath資源模板加載器
最常用的加載器。在springboot里,模板資源是打包到jar文件或者同Class放在一起,因此,可以使用ClasspathResourceLoader來加載模板實例,如下代碼:
```java
ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader("org/beetl/sample/s01/");
Configuration cfg = Configuration.defaultConfiguration();
GroupTemplate gt = new GroupTemplate(resourceLoader, cfg);
Template t = gt.getTemplate("/hello.txt");
String str = t.render();
System.out.println(str);
```
第1行代碼指定了模板根目錄,即搜索模板的時候從根目錄開始,如果new ClasspathResourceLoader("template/"),則表示搜索template下的模板。此處用空構造函數,表示搜索路徑是根路徑,且字符集默認字符集UTF-8.
第4行通過模板的相對路徑org/beetl/sample/s01/hello.txt來加載模板
### 1.4.5 WebApp資源模板加載器
WebAppResourceLoader 是用于Java EE web應用的資源模板加載器,默認根路徑是WebRoot目錄。也可以通過制定root屬性來設置相對于WebRoot的的模板根路徑,從安全角考慮,建議放到WEB-INF目錄下
如下是Jfinal集成 里初始化GroupTemplate的方法
```java
Configuration cfg = Configuration.defaultConfiguration();
WebAppResourceLoader resourceLoader = new WebAppResourceLoader();
groupTemplate = new GroupTemplate(resourceLoader, cfg);
```
WebAppResourceLoader 假定 beetl.jar 是位于 WEB-INF/lib 目錄下,因此,可以通過WebAppResourceLoader類的路徑來推斷出WebRoot路徑從而指定模板根路徑。所有線上環境一般都是如此,如果是開發環境或者其他環境不符合此假設,你需要調用resourceLoader.setRoot() 來指定模板更路徑
### 1.4.6 自定義資源模板加載器
有時候模板可能來自文件系統不同目錄,或者模板一部分來自某個文件系統,另外一部分來自數據庫,還有的情況模板可能是加密混淆的模板,此時需要自定義資源加載,擴展 ResouceLoader 才能實現模板功能,這部分請參考高級部分
- Beetl 3 中文文檔
- 第一部分 基礎用法
- 1.1 安裝
- 1.2 快速開始
- 1.3 模板基礎配置
- 1.4 模板加載器
- 1.5 定界符與占位符
- 1.6 注釋
- 1.7 變量定義
- 1.8 屬性
- 1.9 數學表達式
- 1.10 循環語句
- 1.11 條件語句
- 1.12 異常捕獲
- 1.13 虛擬屬性
- 1.14 函數調用
- 1.15 安全輸出(重要)
- 1.16 輸出格式化
- 1.17 標簽
- 1.18 調用Java方法與屬性
- 1.19 嚴格MVC控制
- 1.20 指令
- 1.21 錯誤處理
- 1.22 Beetl小工具
- 1.23 Escape
- 第二部分 高級用法
- 2.1 配置GroupTemplate
- 2.2 自定義方法
- 2.3 自定義格式化函數
- 2.4 自定義標簽
- 2.5 自定義虛擬屬性
- 2.6 使用額外的資源加載器
- 2.7 自定義資源加載器
- 2.8 使用CompositeResourceLoader
- 2.9 自定義錯誤處理器
- 2.10 自定義安全管理器
- 2.11 注冊全局共享變量
- 2.12 自定義布局
- 2.13 性能優化
- 2.14 定制輸出
- 2.15 定制模板引擎
- 2.16 直接運行Beetl腳本
- 2.17 模板校驗
- 第三部分 Web 集成
- 3.1 Web提供的全局變量
- 3.2 集成技術開發指南
- 3.3 Servlet集成
- 3.4 SpringMVC集成
- 3.5 Spring Boot集成
- 3.6 Jodd集成
- 3.7 JFinal4 集成方案
- 3.8 Nutz集成
- 3.9 Struts2集成
- 3.10 整合ajax的局部渲染技術
- 3.11 在頁面輸出錯誤提示信息
- 附錄
- 4.1 內置方法
- 4.2 Spring相關函數
- 4.3 Spring security
- 4.4 shiro
- 4.5 內置格式化方法
- 4.6 內置標簽函數
- 4.7 內置html標簽
- 4.8 性能優化
- 4.9 Eclipse 插件
- 4.10 性能測試對比