`
ayufox
  • 浏览: 277205 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

FreeMarker对Template的加载过程

阅读更多
        前一阵子在研究使用数据库来配置表现层的信息的技术可行性,由于之前已经使用FreeMarker封装了很多macro,很显然,
这些投资不能浪费,方案的选择上最终我确定在根据数据库的配置来动态生成Template,然后由FreeMarker引擎加载,那么
FreeMarker是如何加载Template的呢,是否能够支持非文件的Template的加载呢?
       通过源码分析,FreeMarker对Template的加载过程如下
       Configuration(getTemplate)-->TemplateCache(getTemplate)-->TemplateCache(loadTemplate)-->
TemplateLoader(getReader)
      再看看TemplateLoader的接口
   
java 代码
 
  1. public interface freemarker.cache.TemplateLoader  
  2. {  
  3.     Object findTemplateSource(String name) throws java.io.IOException;  
  4.     long getLastModified(Object source);  
  5.     Reader getReader(Object source, String name) throws java.io.IOException;  
  6.     void closeTemplateSource(Object source) throws java.io.IOException;  
  7. }  

   

      很显然,就技术而言,问题的关键就在于怎么实现自己的TemplateLoader了

   
分享到:
评论
2 楼 magice 2007-08-17  
为什么要把template放置到数据库中,美工做好的页面还要存入到数据库一次?!
1 楼 zinking 2007-04-04  
就这么多叙述我觉得意义不大

相关推荐

    FreeMarkerTemplateDemo

    4. **代码生成逻辑**:这通常是Java代码的一部分,负责创建数据模型,加载模板,并调用FreeMarker的`Template`类的`process`方法,将数据模型和模板结合,生成最终的代码。 在描述中提到的CSDN博客文章"42193235...

    Java freemarker 模板生成word动态表格

    6. **模板与数据合并**:使用FreeMarker的`Template`类加载模板文件,然后用`process`方法将数据模型应用到模板上,生成最终的Word文档。 7. **POM.xml**:在Maven项目中,`pom.xml`文件是项目的配置文件,用于定义...

    FreeMarker导出模板,以及基本代码

    - **创建配置对象**:使用`Configurable`接口的实现类`freemarker.template.Configuration`初始化配置。 - **加载模板**:使用`Configuration`对象的`getTemplate()`方法加载模板文件。 - **构建数据模型**:创建...

    freemarker 教程 使用手册

    1. Servlet容器集成:在Servlet环境中,通常通过`Template`类加载模板文件,使用`Configuration`配置管理模板。 2. 数据模型设置:通过`ModelAndView`或`Map`将Java对象传递到视图,供Freemarker使用。 3. 视图...

    用Freemarker生成word文档

    import freemarker.template.Template; import java.io.*; import java.util.HashMap; import java.util.Map; public class CreateDoc { private Configuration configuration = null; public CreateDoc() ...

    freemark简单使用源码

    使用FreeMarker的`Template`类加载模板,并用`Configuration`实例渲染数据模型: ```java Configuration cfg = new Configuration(Configuration.VERSION_2_3_30); cfg.setClassForTemplateLoading(this....

    freemarker

    通过设置`setClassForTemplateLoading`方法,指定了模板文件的加载位置,通常这些模板文件是以`.ftl`(Freemarker Template Language)扩展名存储的。 #### 2. 获取Template对象 在配置好`Configuration`后,接...

    适用jdk1.8的freemarker

    尽管Freemarker本身对JDK版本的要求并不高,通常支持J2SE 5.0及更高版本,但使用Java 1.8可以充分利用其新特性,如 Lambda表达式 和 Stream API,提高代码的简洁性和效率。 2. Freemarker基本概念: - 模板...

    freemarker解析成pdf

    Freemarker是一个强大的模板引擎,常用于...通过学习和运行这些示例,你可以更直观地理解Freemarker解析生成PDF的完整流程。在实践中,不断调整和优化模板设计,以及合理组织数据模型,可以使生成的PDF更加专业和高效。

    freemarker_word.zip

    2. **加载模板**:然后,使用FreeMarker API加载`Product.ftl`模板文件。 3. **设置模板数据**:将之前创建的数据模型绑定到模板中,使模板变量能够被正确的值替换。 4. **生成Word文档**:最后,通过FreeMarker的...

    freemarker入门demo

    FTL是Freemarker Template Language的缩写,它是一种声明式的标记语言,用于定义如何将数据模型渲染成可输出的文本。在FTL文件中,你可以插入静态文本、控制结构(如循环和条件语句)以及对数据模型的引用。 在我们...

    freemarker excel下载

    在实际开发中,你可能还会遇到如何设置单元格样式、合并单元格、添加图表等问题,这都需要对Freemarker和相关库有深入的理解和实践。通过不断学习和实践,你可以熟练掌握这个功能,为用户提供高效、便捷的数据导出...

    freemarker-2.3.8源码

    5. **模板解析(Template Parsing)**:源码中会包含Freemarker如何解析模板文件,将其转化为抽象语法树(AST)的过程。 6. **模板执行(Template Execution)**:Freemarker通过`Template`类来执行模板,将数据...

    利用FreeMarker生成word文件例子

    import freemarker.template.Template; import freemarker.template.TemplateException; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util....

    freemarker-2.3.23jar

    `freemarker-2.3.23.jar`是Freemarker库的一个版本,发布于2.3.23,这个版本可能包含了对早期版本的一些改进、新功能或bug修复。 Freemarker的核心概念是模板语言,它是一种声明式的编程方式,允许开发者编写不包含...

    freemarker实现代码生成器

    import freemarker.template.Template; import freemarker.template.TemplateException; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.HashMap; ...

    freemarker.jar

    - **高效性能**:FreeMarker对模板进行预编译,提高执行效率。 - **灵活性**:支持条件语句(`<#if>`)、循环(`<#foreach>`)、宏定义等复杂的逻辑控制。 - **强大的数据处理**:内置函数和操作符,如字符串拼接、...

    freemarker\Freemarker教程_中文版

    为了使用Freemarker,开发者首先需要创建一个`Configuration`实例,并对其进行必要的配置。例如,设置模版的加载路径、数据模型的处理方式等。这一步骤确保了Freemarker能够正确地识别和处理模版。 ```java ...

    java通过freemarker模板导出word含图片

    这个过程比较复杂,通常需要对Word文档的XML结构有深入理解。 总的来说,通过Java和FreeMarker,我们可以方便地生成包含图片的Word文档。虽然这个示例只支持.doc格式,但通过扩展可以支持.docx或者其他格式。要了解...

Global site tag (gtag.js) - Google Analytics