freemarker使用小结

认识freemarker

FreeMarker是一种模板引擎,使用自己的模板语法来生成文本输出。广泛应用于Java和Java相关的Web应用程序中,例如JSP、文件生成、消息模板等技术场景。

freemarker语法

FreeMarker模板语法使用标签和指令来控制模板的行为。下面是一些常见的FreeMarker模板语法元素:

1)变量插值:使用${...}将变量插入到模板中。例如,${user.name}会将user对象的name属性的值插入到模板中。

2)指令:指令以<#...>开始,以结束。常见的指令有:

  • if-else:用于条件判断。例如:

    <#if user.isAdmin>
      Welcome, admin!
    <#else>
      Welcome, user!
    
    
  • list:用于循环遍历列表。例如:

    <#list users as user>
      ${user.name}
    
    
  • assign:用于将值分配给变量。例如:

    <#assign greeting = "Hello, world!">
    ${greeting}
    
  • include:用于包含其他模板。例如:

    <#include "header.ftl">
    

3)内置函数和指令:FreeMarker提供了许多内置的函数和指令,用于处理数据和执行常见的操作。例如:

  • ${variable?default("N/A")}:使用default函数设置默认值。
  • <#list users as user>${user_index + 1}. ${user.name}:使用user_index获取当前循环的索引。

4)表达式:FreeMarker支持丰富的表达式语法,包括算术运算符、比较运算符、逻辑运算符等。例如:

  • ${a + b}:计算ab的和。
  • ${a > b}:检查a是否大于b

freemarker常用内置函数

FreeMarker提供了许多常用的内置函数,用于在模板中进行数据处理和操作。以下是一些常用的内置函数:
字符串处理函数

  • length:获取字符串的长度。
  • upper_case:将字符串转换为大写。
  • lower_case:将字符串转换为小写。
  • substring:截取字符串的子串。
  • trim:去除字符串两端的空白字符。
  • replace:替换字符串中的指定字符。

数字处理函数

  • number:将字符串转换为数字。
  • round:对数字进行四舍五入。
  • ceiling:向上取整。
  • floor:向下取整。
  • max:获取一组数字中的最大值。
  • min:获取一组数字中的最小值。

集合处理函数

  • size:获取集合的大小。
  • seq_contains:检查集合中是否包含指定的元素。
  • seq_index_of:获取集合中指定元素的索引。
  • seq_last_index_of:获取集合中指定元素的最后一个索引。

日期和时间处理函数

  • now:获取当前日期和时间。
  • date:将字符串解析为日期。
  • time:将字符串解析为时间。
  • datetime:将字符串解析为日期和时间。
  • iso_utc:将日期和时间转换为 ISO 8601 格式的字符串。

条件判断函数

  • if:根据条件选择不同的值。
  • default:如果值为空或不存在,则使用默认值。

java中使用freemarker

Java中使用FreeMarker,通过以下步骤即可轻松上手:

  1. 添加 FreeMarker 依赖:将 FreeMarker 相关的库添加到项目中。可以手动下载 FreeMarker JAR 文件,也可以使用构建工具(如 Maven 或 Gradle)来管理依赖。
    <dependency>
        <artifactId>freemarkerartifactId>
        <groupId>org.freemarkergroupId>
        <version>${version.freemarker}version>
    dependency>
  1. 创建 Configuration 象:在 Java 代码中,首先需要创建一个 Configuration 对象,它是 FreeMarker 的主要入口点,负责加载和管理模板配置。可以指定模板文件的位置、编码方式等信息。
    Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
    cfg.setDirectoryForTemplateLoading(new File("path/to/templates"));
    cfg.setDefaultEncoding("UTF-8");
    
  2. 获取模板:使用 Configuration 对象加载模板文件,可以通过模板文件的名称或路径来获取模板对象。
    Template template = cfg.getTemplate("template.ftl");
    
  3. 准备数据模型:创建一个包含数据的 Java 对象,该对象将用于在模板中进行变量插值。
    Map<String, Object> dataModel = new HashMap<>();
    dataModel.put("name", "John Doe");
    dataModel.put("age", 30);
    
  4. 处理模板:使用数据模型将模板进行处理,生成最终的输出结果。
    StringWriter writer = new StringWriter();
    template.process(dataModel, writer);
    String output = writer.toString();
    
    在这个例子中,dataModel 是一个包含键值对的 Map,其中键是模板中的变量名,值是相应的数据。template.process(dataModel, writer) 方法将数据模型应用到模板中,生成的结果将写入 StringWriter 对象。

你可能感兴趣的:(java,服务器,freemarker,模板)