前一阵子在研究使用数据库来配置表现层的信息的技术可行性,由于之前已经使用FreeMarker封装了很多macro,很显然,
这些投资不能浪费,方案的选择上最终我确定在根据数据库的配置来动态生成Template,然后由FreeMarker引擎加载,那么
FreeMarker是如何加载Template的呢,是否能够支持非文件的Template的加载呢?
通过源码分析,FreeMarker对Template的加载过程如下
Configuration(getTemplate)-->TemplateCache(getTemplate)-->TemplateCache(loadTemplate)-->
TemplateLoader(getReader)
再看看TemplateLoader的接口
java 代码
- public interface freemarker.cache.TemplateLoader
- {
- Object findTemplateSource(String name) throws java.io.IOException;
- long getLastModified(Object source);
- Reader getReader(Object source, String name) throws java.io.IOException;
- void closeTemplateSource(Object source) throws java.io.IOException;
- }
很显然,就技术而言,问题的关键就在于怎么实现自己的TemplateLoader了
分享到:
相关推荐
3.4、加载模板................................................................................. 17 3.5、异常处理................................................................................. 19 四...
自动加载修改后的 Java 文件,开发过程中无需重启服务 AOP 支持,拦截器配置灵活,功能强大 Plugin 体系结构,扩展性强 多视图支持,支持 Enjoy、FreeMarker、JSP 强大的 Validator 后端校验功能 功能齐全,...
1.3、获取模版(template)..................................................................5 1.4、把模版与数据模型合并...................................................................6 1.5、完整的...
自动加载修改后的java文件,开发过程中无需重启web server AOP支持,拦截器配置灵活,功能强大 Plugin体系结构,扩展性强 多视图支持,支持FreeMarker、JSP、Velocity 强大的Validator后端校验功能 功能齐全,...
自动加载修改后的java文件,开发过程中无需重启web server AOP支持,拦截器配置灵活,功能强大 Plugin体系结构,扩展性强 多视图支持,支持FreeMarker、JSP、Velocity 强大的Validator后端校验功能 功能齐全,...
自动加载修改后的 Java 文件,开发过程中无需重启服务 AOP支持,拦截器配置灵活,功能强大 Plugin 体系结构,扩展性强 多视图支持,支持 Enjoy、FreeMarker、JSP、Velocity 强大的 Validator 后端校验功能 功能齐全...
自动加载修改后的 Java 文件,开发过程中无需重启服务 AOP支持,拦截器配置灵活,功能强大 Plugin 体系结构,扩展性强 多视图支持,支持 Enjoy、FreeMarker、JSP、Velocity 强大的 Validator 后端校验功能 功能齐全...
该属性指定视图主题所需要模板文件的位置, 该属性的默认值是template,即默认加载template路径下的模板文件. struts.ui.templateSuffix 该属性指定模板文件的后缀,该属性的默认属性值是ftl.该属性还允许使用ftl、vm...
struts自动加载的一个配置文件列表 struts.configuration.xml.reload Whether to reload the XML configuration or not 是否加载xml配置(true,false) struts.continuations.package The package containing ...
该属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件。 struts.ui.templateSuffix 该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用...
下图:对比服务器页面渲染和使用domTemplate前端引擎开发流程 服务器端模板解析 domTemplate前端解析 用法 导入jquery.js或者...
web模板采用freeMarker,以及ajax加载 页面由vue重构: : ,原页面依旧保留 查询实现 1. mysql全文索引 模糊查询通过mysql建立全文索引,未使用分词器,将最小分词数转换2: [mysqld] innodb_ft_min_token_size=2 ...
JAVA极速WEB + ORM框架JFinal JFinal是基于Java语言的...开发过程中无需重启服务AOP支持,拦截器配置灵活,功能强大插件体系结构,扩展性强多视图支持,支持Enjoy,FreeMarker,JSP,Velocity强大的Validator初步验证功
三 首页的加载过程 在浏览器中输入http://localhost:8080/jeecms,回车 首先进入配置文件web.xml, <context-param> <param-name>contextConfigLocation</param-name> <!----> <param-value> /WEB-INF/...
在temppate目录创建一个文件,如${className}SpringControler.java 则代码生成器会自动将该模板文件加载并生成该文件 充分利用各种文件的注释 如在.xml中我们可以使用 在.properties文件中我们可以使用 #generator-...
MongoDBTemplate iii. 29.2.3. Spring Data MongoDB仓库 iii. 29.3. Gemfire iv. 29.4. Solr i. 29.4.1. 连接Solr ii. 29.4.2. Spring Data Solr仓库 v. 29.5. Elasticsearch i. 29.5.1. 连接Elasticsearch ii. ...
关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...
Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...
Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...