一、简介
1、FreeMarker是一款模板引擎
即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
2、FreeMarker是免费的
基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算,之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据。展示数据
3.FreeMarker是一款展示数据的模板
其模板代码在.ftl(FreeMarker TemplateLanguage)文件中编写,属于简单、专用的语言。ftl———html
二、使用引入
1、需要在xml进行ftl解析配置
<!-- freemarker的配置 -->
<bean id="freemarkerConfigurer"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 前缀 文件的目录 -->
<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
<property name="defaultEncoding" value="UTF-8" />
<!-- <property name="freemarkerSettings">
<props>
<prop key="template_update_delay">10</prop>
<prop key="locale">zh_CN</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="number_format">#.##</prop>
</props>
</property> -->
</bean>
<!-- freemaker的视图解析器 -->
<!-- 配置FreeMark视图 -->
<bean id="freeMarkerViewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html;charset=UTF-8" />
<!-- 后缀 -->
<property name="suffix" value=".html" />
<!-- <property name="requestContextAttribute" value="request" />
--> </bean>
2、使用ftl模板语句时需要在.ftl文件中
三、语法
1. if else 语句
if语句:<#if boolean表达式> </#if>
(1)判断后端返回的Java对象是否为空(null):<#if Java对象或者属性??> 执行代码 </#if>
说明:Java对象可以是集合、普通Java类或者属性。
(2)判断集合size:<#if 集合对象?size == 0> 执行代码 </#if>
(3)判断值相等:<#if 属性变量 == 2> 执行代码 </#if>
2、if else 语句:<#if orgList?size == 0> 执行代码 <#else> 执行代码 </#if>
2.循环语句
集合遍历:
<#list userList as index>
</#list>
范围内遍历:
示例:<#list startPage..endPage as index> </#list>
3.输出展示
输出后台返回的普通字符串或者数值:
<#if 变量名??>${变量名}</#if>
示例:<#if total??>${total}</#if>
输出后台返回的对象属性:
<#if 对象名.对象属性??>${对象名.对象属性}</#if>
示例::<#if org.orgName??>KaTeX parse error: Expected 'EOF', got '#' at position 16: {org.orgName}</#̲if> 时间输出: 示例:`<…{org.createdDate?string(“yyyy-MM-dd HH:mm:ss”)}</#if>`
4.包含
<#include "commons/header.html">
5.注解
<#-- freemarker的注释
使用freemarker包含另一个页面
-->