FreeMarker模板引擎基础知识

FreeMarker基础简介

FreeMarker是一款模板引擎:一种基于模板,用来生成输出文本的通用工具。它是为java程序员提供的一个开发包或者说是库类,一般的用法就是Java程序通过SQL查询到数据,FreeMarker使用模板生成文件页面来显示已经准备好的数据。也就是 输出= 模板+数据模型。



FreeMarker支持的数据类型有:

标量

  • 字符串
  • 数字
  • 布尔值
  • 日期

容器

  • 哈希表
  • 系列

子程序

  • 方法和函数
  • 用户自定义指令(比如宏)

其他

  • 节点


模板(FTL编程)是由如下部分混合而成的:

  • Text文本:文本会照原样输出
  • Interpolation插值:计算出的值代替
  • FTL tags标签
  • Comments注释


常用操作,这里只列举不同于其他编程语言的:

默认值:value!"testValue" 这里如果value没有值就会把testValue这个默认值给他

检测不存在的值:hasValue??结果是true或false。



我们也可以自定义指令,自定义指令可以使用macro指令来定义。比如:

定义宏

<#macro welcome>
    <h1>Hello world!</h1>
</#macro>

宏调用:

<@welcome></@welcome> 或者 <@welcome/>

输出结果:

<h1>Hello world!</h1>


也可以定义带有参数的宏

定义宏

<#macro welcome person>
    <h1>Hello world! Hello ${person}!</h1>
</#macro>

宏调用:

<@welcome person="YEN"></@welcome> 或者 <@welcome person="YEN"/>

输出结果:

<h1>Hello world! Hello YEN!</h1>

如果需要多个参数则采用下列形式

<#macro 宏名 参数1名称 参数2名称 参数3名称>
    处理
</#macro>

eg:

<#macro Welcome name sex age>
    <h1>Hello,${name}-${sex}-${age}</h1>
</#macro>

调用宏时:

<@#Welcome name="YEN" sex="男" age="20"/>


自定义指令可以嵌套内容 <#nested>

定义

<#macro testNested>
    <ul>
        <li>
            <#nested>
        </li>
    <ul>
</#macro>

调用

<@testNested>this is test Nested!</@testNested>

输出:

<ul>
        <li>
            this is test Nested!
        </li>
<ul>


嵌套的内容可以被多次调用:

定义

<#macro testNested>
    <ul>
        <li>
            <#nested>
            <#nested>
            <#nested>
        </li>
    <ul>
</#macro>

调用

<@testNested>this is test Nested!</@testNested>

输出:

<ul>
        <li>
            this is test Nested!
            this is test Nested!
            this is test Nested!
        </li>
<ul>


宏和循环变量

<#macro doCount>
    <#nested 1>
    <#nested 2>
    <#nested 3>
</#macro>
<@doCount; x>
    ${x} test.
</@doCount>
1 test.
2 test.
3 test.



FreeMarker程序开发

首先自然要导入FreeMarker程序的jar包

一个FreeMarker需要如下步骤:

package com.test.freemarker;

import java.io.File;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class FtlTest {
    public static void main(String[] args) throws Exception {

        //创建Freemarker配置实例
        Configuration cfg = new Configuration();
        cfg.setDirectoryForTemplateLoading(new File("templates")); 

        //创建数据模型
        Map map = new HashMap();
        map.put("username", "YEN");

        //加载模板文件
        Template t1 = cfg.getTemplate("test.ftl");

        //显示生成的数据
        Writer out = new OutputStreamWriter(System.out);
        t1.process(map, out);
        out.flush();

    }
}
时间: 2024-08-27 22:37:11

FreeMarker模板引擎基础知识的相关文章

Java之利用Freemarker模板引擎实现代码生成器,提高效率

http://blog.csdn.net/huangwenyi1010/article/details/71249258 目录(?)[-] 开心一笑 视频教程 提出问题 解决问题 前言 技术选型 实现思路 首先假如在数据库中有一张表 ay_test 我们首先要获取数据库的连接这里我只贴出相关的代码 获取数据库表的元数据 最后根据元数据获取表字段注释等等生成相关的文件 代码实现 Java代码实现 FreeMarkerTemplateUtils工具类 实体类 ColumnClass freemark

Spring Boot? 使用freemarker模板引擎渲染web视图

效果图 代码 package com.wls.integrateplugs.hello.controller; /** * Created by wls on 2017/8/24. */ import java.util.Locale; import java.util.UUID; import javax.servlet.http.HttpSession; import com.sun.org.apache.regexp.internal.RE; import org.springframew

Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎

文章目录 1. FreeMaker 代替 JSP 作为页面渲染 2. 生成静态文件 3. 扩展阅读 4. 源代码 Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker.Thymeleaf.这篇,我们看下 Spring Boot 如何集成和使用 FreeMarker. Spring Boot 中使用 FreeMarker 模板非常简单方便.如果想要使用FreeMarker 模板引擎,首先,修改 POM 文件,添加依赖. FreeMaker 代替 JSP 作为页面渲染 <de

SpringBoot获取Freemarker模板引擎,生成HTML代码

今天用Ajax异步添加评论,加载Freemarker模板引擎,生成模板模块 1.新建Freemarker模板 <li id="${comment.oId}"> <div> <div class="avatar tooltipped tooltipped-n" aria-label="${comment.commentName}" style="background-image: url(${comment.

thymeleaf模板引擎基础使用(转)

刚好项目上用到这个模板引擎,记录以下基础用法. thymeleaf介绍 简单说, Thymeleaf是一个跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP .相比其他的模板引擎,它有如下三个极吸引人的特点: thymeleaf在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果.这是由于它支持html原型,然后在html标签里增加额外的属性来达到模板+数据的展示方式.浏览器解释html时会忽略未定义

用 php 实现一个视图组件和模板引擎——基础

只要不是做后端接口开发和一些作为守护进程之类的服务器脚本,大多数时候都是在和浏览器打交道,因此合理组织并展现 html 标签是最为常见的工作.一般大家使用框架时,都会自带有一套视图组件和模板引擎. 我们不讨论这些组件和引擎的好坏.因为这些东西已经经过考验,可以在生产环境下使用.我们现在只是为了学习一些东西,这时候了解一些原理上的可能对以后的帮助更大,如果一些人真的很有时间,利用这些基础知识完全可以写一个自己的组件,即可当做练习,也可以拿去自用. 好了,说这么多,我还是希望很多人明白,视图和模板引

freemarker模板引擎 常用标签

freemarker正常生成HTML的模板引擎,公司需求将书籍来源的数据发放到不同的渠道,每个渠道生成特定的模板,这样数据自动生成相应的格式,主要是生成xml格式,所以根据网上的Demo改成了对应项目测试的Demo.--------------------此为背景. 正常的模板文件.flt的,但是发现改成.xml格式的也完全没有问题,我表示非常高兴,哇卡卡卡~ 网上有很多标签大全,我就捡我用过的标签写:(不断的补充ing...) 1.<#if></#if> <#elseif&

Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则.强大的功能.高效的渲染效率.详尽的帮助说明与不断的更新与维护.常见的前端模板引擎有: 常用的java后台模板引擎:jsp.FreeMarker.Velocity等. 请不要迷恋速度,为了推广的测试可能是片面的,好的模板引擎经得起时间考验,建议大家选择成熟的.常用的模板引擎.另外不管前后端的模板引擎

SpringMVC的架设,使用Freemarker模板引擎

自行编译完spring4.0后,要架设以Freemaker为模板引擎的网站,同时还要整合Hibernate3.6.这当然要用Spring的MVC架构.我希望是注解模式完成,经过几次查询和修改,终于架设完成,现记录一下,以备后面使用. 准备工作:自行编译Spring4,也可以网上下载已经编译好的包:下载Hibernate3.6:下载各类依赖包,以下为我列出的各类依赖包: antlr-2.7.6.jar aopalliance-1.0.jar aspectj.jar c3p0-0.9.1.2.jar