深入浅出FreeMarker(一)-基础教程
- 格式:pdf
- 大小:1.44 MB
- 文档页数:38
freemarker基本语法一、什么是FreemarkerFreemarker是一个模板引擎,它可以将数据和模板进行结合,生成所需的文本输出。
它主要用于Web应用程序中的MVC架构中,将业务逻辑和表现层分离。
二、Freemarker基本语法1. 变量Freemarker中的变量可以通过${}来表示,如${}表示取出user对象的name属性。
2. 指令指令是Freemarker中最重要的语法之一,它可以控制模板引擎的行为。
常用指令有if、list、assign等。
(1)if指令:用于条件判断,例如:<#if user.age gt 18>成年人<#else>未成年人</#if>```(2)list指令:用于循环输出,例如:```html<#list users as user>${}</#list>```(3)assign指令:用于变量赋值,例如:```html<#assign name = "张三"> ${name}```宏定义是一种自定义函数的方式,在模板中可以多次调用。
例如:```html<#macro printName name>${name}</#macro><@printName name="张三"/><@printName name="李四"/>```4. 内建函数Freemarker提供了一些内建函数,可以方便地处理字符串、日期等数据类型。
例如:(1)字符串函数:```html${name?length} //获取字符串长度${name?upper_case} //将字符串转换为大写字母${name?lower_case} //将字符串转换为小写字母```(2)日期函数:```html${date?string("yyyy-MM-dd")} //将日期格式化为指定格式的字符串${date?time} //获取日期的时间戳```5. 注释在Freemarker中,注释可以使用<#-- -->来表示,例如:```html<#-- 这是一段注释 -->```三、Freemarker在Java中的应用1. 引入Freemarker依赖在Maven项目中,可以通过以下方式引入Freemarker依赖:```xml<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency>```2. 创建Configuration对象Configuration对象是Freemarker的核心类,它会负责解析模板文件和数据模型。
FreeMarket模板引擎快速入门【面试+工作】FreeMarket模板引擎快速入门【面试+工作】FreeMarker 快速入门FreeMarker是一个很值得去学习的模版引擎。
它是基于模板文件生成其他文本的通用工具。
本章内容通过如何使用FreeMarker生成Html web 页面和代码自动生成工具来快速了解FreeMarker。
1 简介FreeMarker是一款用java语言编写的模版引擎,它虽然不是web应用框架,但它很合适作为web应用框架的一个组件。
特点:•轻量级模版引擎,不需要Servlet环境就可以很轻松的嵌入到应用程序中•能生成各种文本,如html,xml,java,等•入门简单,它是用java编写的,很多语法和java相似工作原理:2 FreeMarker 程序这里通过模拟简单的代码自动生产工具来感受第一个FreeMarker 程序。
项目目录结构项目创建流程第一步:创建一个maven项目导入 FreeMarker jar 包第二步:创建目录templates,并创建一个 FreeMarker模版文件hello.ftl第三步:创建一个运行FreeMarker模版引擎的FreeMarkerDemo.java 文件第四步:运行main方法后刷新项目pom.xml 文件,maven 项目核心文件,管理 jar 包。
hello.ftl FreeMarker基本语法:${xxx} xxx 相当于占位符,java后台给xxx赋值后,再通过${}输出FreeMarkerDemo.java 核心方法,使用 FreeMarker 模版引擎。
运行程序后刷新项目,会发现多了一个AutoCodeDemo.java类。
不仅仅是java类,xml也是可以。
笔者就是通过FreeMarker做了一个简易的工具类,公司的一个标准管理页面及其增删改查等功能,以及相关的配置文件(十三个文件),一个回车就全部自动生成(偷懒ing)。
freemarker1⼀些内建函数和⽤法${" green mouse"?cap_first} --> Green mouse //字符串中的第⼀个单词的⾸字母⼤写${"ABCDF"?lower_case} --> abcdf //字符串⼩写形式[${"a"?left_pad(5)}] --> [ a] //距左边如果它仅仅⽤1个参数,将在字符串的开始插⼊空⽩,知道整个串的长度达到参数指定的值. 如果字符串长度达到或者超过指定的长度,就什么都不做.[${"a"?left_pad(8,".oO")}] -->[.oO.oO.a]//第⼆个参数也可以是长度⽐1⼤的字符串,这个字符串会周期性的插⼊.<#if "piceous"?contains("ice")>It contains "ice"<#/if> --> It contains "ice" //contains 包含${"aaaaa"?repalce("aaa","XX")} --> XXaa //在元字符串中,⽤另外⼀个字符串来替换原字符串中出现它的部分不处理词的边界<#assign x= 's/b c'> ${x?url} --> a%2Fb%20c //通常引⽤的属性值,⽤普通引号("")包括,⽽不是单引号(''),因为单引号是不被URL转义的,<#list "someMOOtestMOOtext"?split("MOO" as x)>-${x}</#list> --> -some -test - text //split 分割,(${" green mouse "}?trim) --> (green mouse) //trim 去掉字符串⾸尾的空格<替换为<>替换为>&替换为&"替换为"'替换为'学习是枯燥的.。
freemarker使用流程Freemarker使用流程Freemarker是一款流行的模板引擎,广泛应用于Java Web开发中。
它能够有效地将数据与展示分离,提高开发效率和代码的可维护性。
下面将介绍Freemarker的使用流程,帮助读者更好地理解和运用这一工具。
1. 熟悉Freemarker语法在使用Freemarker之前,首先需要熟悉其语法规则。
Freemarker 使用类似于HTML的标签和表达式来动态生成内容。
了解Freemarker的基本语法结构对于后续的开发至关重要。
2. 配置Freemarker环境在项目中引入Freemarker依赖,并配置Freemarker的相关参数,如模板文件的路径、编码方式等。
确保Freemarker能够正常工作,并与项目的其他组件协调配合。
3. 创建Freemarker模板编写Freemarker模板文件,定义页面的结构和内容。
在模板中可以使用Freemarker的标签和表达式来引用数据、控制流程和展示内容。
合理设计模板结构,提高页面的可读性和可维护性。
4. 准备数据模型准备与模板对应的数据模型,包括需要在页面中展示的数据内容。
数据模型可以是JavaBean、Map等形式,确保数据的准确性和完整性,以便在模板中进行引用和展示。
5. 渲染模板将数据模型与Freemarker模板进行结合,通过Freemarker引擎进行渲染。
在渲染过程中,Freemarker会根据模板中的标签和表达式动态生成最终的页面内容,将数据填充到指定位置。
6. 输出页面内容将渲染后的页面内容输出到浏览器或其他客户端,让用户可以看到最终的页面效果。
确保页面的呈现与预期一致,检查数据的展示是否准确,页面的布局是否符合设计要求。
7. 调试和优化在使用Freemarker的过程中,可能会遇到一些问题和性能瓶颈。
及时调试代码,查找并解决bug,优化页面性能和加载速度。
保持代码的简洁和高效,提升用户体验和开发效率。
新⼿⼊门学习SpringFreemarker教程解析初步学习freemarker ,先做⼀个简单的HelloWord程序!新建⼀个WEB⼯程,下载(我使⽤的是freemarker-2.3.20)freemarker并导⼊freemarker.jar,在WEB-INF下新建⽂件夹templates⽤于存放模版⽂件在templates下新建test.ftl,这是⽰例模版⽂件。
内容就是HTML内容,⾥⾯带有⼀个标记符,⽤于将来进⾏变量替换,内容如下:<html><head><title>freemarker测试</title></head><body><h1>${message},${name}</h1></body></html>新建⼀个Servlet,⽤于请求设置变量,并处理模版的输出:package com.test.servlet;import java.io.IOException;import java.io.Writer;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import freemarker.template.Configuration;import freemarker.template.Template;import freemarker.template.TemplateException;@SuppressWarnings("serial")public class HelloFreeMarkerServlet extends HttpServlet {// 负责管理FreeMarker模板的Configuration实例private Configuration cfg = null;public void init() throws ServletException {// 创建⼀个FreeMarker实例cfg = new Configuration();// 指定FreeMarker模板⽂件的位置cfg.setServletContextForTemplateLoading(getServletContext(),"/WEB-INF/templates");}@SuppressWarnings("unchecked")public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 建⽴数据模型Map root = new HashMap();root.put("message", "hello world");root.put("name", "java⼩强");// 获取模板⽂件Template t = cfg.getTemplate("test.ftl");// 使⽤模板⽂件的Charset作为本页⾯的charset// 使⽤text/html MIME-typeresponse.setContentType("text/html; charset=" + t.getEncoding());Writer out = response.getWriter();// 合并数据模型和模板,并将结果输出到out中try {t.process(root, out); // 往模板⾥写数据} catch (TemplateException e) {e.printStackTrace();}}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void destroy() {super.destroy();}}注意要在你的web.xml中配置该Servlet:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><servlet><servlet-name>hello</servlet-name><servlet-class>com.test.servlet.HelloFreeMarkerServlet</servlet-class></servlet><servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>为了⽅便测试,访问⼯程直接跳转到Servlet,对主页index.jsp做⼀个简单修改:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html><body><%String mypath = "hello";response.sendRedirect(basePath + mypath);%></body></html>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
SpringBootFreeMarker使⽤教程FreeMarker 跟 Thymeleaf ⼀样,是⼀种模板引擎,他可以⽆缝兼容 FreeMarker 在 Spring Boot 开发者中仍然有着很⾼的地位。
本章重点内容1. 编写⼀个最简单的 Freemark 模板⽰例2. 简单说明 FreeMarker1 FreeMarker 简介相对于 Jsp ,FreeMarker 具有太多的优势。
FreeMarker 适合 Mvc 场景。
FreeMarker 最⼤的特点就是具有可编程能⼒,可以对任何后台输出的数据做编程能⼒,这就像在 Java 中加⼊了 PHP 功能,这⾮常有趣。
FreeMarker ⽀持各类语法包括字符输出、条件判断 if/else、循环遍历、1.1 变量${...}1.2 条件语句<#if condition>...<#elseif condition2>...<#elseif condition3>...<#else>...</#if>1.3 循环语句假设 users 包含['Joe', 'Kate', 'Fred'] 序列:<#list users as user><p>${user}</#list>输出:<p>Joe<p>Kate<p>Fred1.4 include 包含语句将版权信息单独存放在页⾯⽂件 copyright_footer.html 中:<hr><i>Copyright (c) 2000 <a href="">Baidu Inc</a>,<br>All Rights Reserved.</i>当需要⽤到这个⽂件时,可以使⽤ include 指令来插⼊:<html><head><title>Test page</title></head><body><h1>Test page</h1><p>Blah blah...<#include "/copyright_footer.html"></body></html>2 Spring Boot 中编写⼀个 FreeMarker ⽰例本⽰例⽂件结构,新增了连个⽤于⽰例⽂件的⽂件 IndexController.java 与 index.ftl+ java/fishpro/freemarker/controller-- IndexController.java+ resources/templates--index.ftl2.1 新建⼀个 Spring Boot 的 Maven 项⽬2.1 新建 Spring Boot 项⽬1. File > New > Project,如下图选择Spring Initializr然后点击【Next】下⼀步2. 填写GroupId(包名)、Artifact(项⽬名)即可。
freemarker的标签语法一、Freemarker是个啥? 。
咱先来说说Freemarker是个啥玩意儿。
Freemarker呢,就像是一个超级厉害的小助手,专门用来处理模板的。
你可以把它想象成一个魔法盒,你给它一些数据,再给它一个模板,它就能按照这个模板把数据变成超级酷炫的东西,像网页啦、邮件内容啦之类的。
为啥要用Freemarker呢?你想啊,要是你每次做网页或者写邮件都要从头开始写代码,那得多累啊。
有了Freemarker,你就可以把那些经常用到的部分做成模板,然后只要把不同的数据塞进去就好了,就像搭积木一样简单又有趣。
二、基本标签语法来咯 。
(一)插值表达式。
这可是Freemarker的基础操作哦。
插值表达式就像一个小嘴巴,它会把数据“说”出来。
在Freemarker里,插值表达式的格式是`{变量名}`。
比如说,你有一个变量叫`userName`,里面存着用户的名字,那你在模板里写 `{userName}`,Freemarker就会把这个变量的值显示出来。
是不是很神奇呢?就像你告诉它一个小秘密,然后它就会把这个秘密展示给大家看。
(二)指令标签。
1. if指令。
这个 `if` 指令就和我们在编程里常见的 `if` 语句差不多啦。
比如说,你想根据用户的年龄来显示不同的内容。
你可以这样写:<#if age > 18>.欢迎,你已经成年啦!<#else>.小宝贝,你还未成年呢。
</#if>.这里的 `age` 就是我们的变量,根据它的值,Freemarker就会决定显示哪一段内容。
这就像是Freemarker在做选择题一样,根据不同的情况选择不同的答案。
2. list指令。
当你有一组数据,比如说一个用户的购物清单,你就可以用 `list` 指令来遍历它。
像这样:<#list shoppingList as item>.- {item}这里的 `shoppingList` 是一个列表类型的变量,`item` 呢,就是每次遍历出来的一个元素。
freemarker语法freemarker是一种模板引擎,它可以将结构化的数据与静态文字文件混合,然后生成HTML页面、XML文档、电子邮件,以及其他格式的文档。
它拥有许多功能,例如强大的if和for指令,Data Model,各种变量,文件包含,数据类型及函数等,能够为开发者们节省大量时间。
本文将会介绍 freemarker法基础、常用语法特性和数据访问等。
一、 freemarker语法基础1.用变量: freemarker 使用 ${...} 式来引用变量,例如:${name} 用 name量。
2.释: freemarker支持两种注释方式,持行注释 (# ...)行注释(<#-- --#>)。
3.件语句: freemarker 使用 <#if condition> ....</#if>式表示条件语句,当条件为true时,紧跟condition之后的元素才会被执行。
4.环语句: freemarker 使用 <#list sequence as item> ... </#list>式表示循环语句, sequence以是数组,字符串,数字或者对象。
二、freemarker语法特性1.算符: freemarker持 +,-, *,/,%,==,!=,>,>=, <=, ??,and,or,not运算符。
2.较: freemarker持比较操作,用比较操作可以产生true或者false,:${age > 10}3.符串操作: freemarker持各种字符串操作,括string.length(), string.substring(), string.contains()等。
4.数: freemarker持很多内置函数,例如date.format(dateObj), date.time?, number.format(numberValue)。
freemarker菜鸟教程Freemarker菜鸟教程1. 介绍Freemarker是一种模板引擎,用于将数据模型与文本模板合并生成输出内容。
它提供了多种功能,使开发人员能够轻松地生成动态网页、邮件、XML文件等。
2. Freemarker的优点- 简洁易学:Freemarker使用简单的语法和模板指令,易于学习和使用。
即使是没有编程经验的初学者也可以快速上手。
- 强大灵活:Freemarker提供了丰富的模板指令和表达式,可以满足各种动态内容生成的需求。
- 高性能:Freemarker运行速度快,生成的输出内容效率高,非常适合用于大规模的数据处理和生成。
3. Freemarker基本语法- 插值:使用${}来插入变量或表达式的值。
```html<p>欢迎来到Freemarker教程,${username}!</p>```- 条件判断:使用if-else指令进行条件判断。
```html<#if age < 18><p>您是未成年人。
</p><#else><p>您已成年。
</p></#if>```- 循环:使用list指令实现列表的循环遍历。
```html<ul><#list users as user><li>${}</li></#list></ul>```- 宏定义:使用#macro指令定义宏,可以实现代码的重复使用。
```html<#macro hello /><h1>Hello, ${name}!</h1></#macro>```4. Freemarker内置指令- include指令:用于引入其他模板文件。
```html<#include \。
FreeMarker入门jar包地址:/freemarkerdownload.html FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。
FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet 或HTTP。
它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP 或Java 等。
Demo:一、在eclipse中创建FreeMarker模板${erName}${erPassword}并将其命名为“user.ftl”二、在eclipse中创建FreeMarker数据模型以User为例:1package test.client;23/**4 * 用户实体类5 *6 * @author Ying-er7 * @time 2010-2-6下午04:05:258 * @version 1.09 */10public class User {11private String userName;1213private String userPassword;1415public String getUserName() {16return userName;17 }1819public void setUserName(String userName) {erName = userName;21 }2223public String getUserPassword() {24return userPassword;25 }2627public void setUserPassword(String userPassword) {erPassword = userPassword;29 }3031}32注意:注意:FreeMarker数据模型不是文本文件,而是树状结构的。
三、在eclipse中填充FreeMarker数据模型将创建好的User对象以key-value的形式封装到Map中片段代码:User user = new User();user.setUserName("测试");user.setUserPassword("123");Map<String, Object> root = new HashMap<String, Object>();root.put("user", user);四、创建FreeMarker的模板引擎,解析模板1.创建和配置Configuration对象,Configuration对象实例负责管理FreeMarker模板的路径加载及模板的创建和缓存。
Freemarker模板+ 数据模型= 输出一、注释:包含在<#--和-->(而不是<!--和-->)之间。
二、F TL标记FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述)。
如下:<#if abc=”abc”>abc</#if>或者[#if abc=”abc”]abc[/#if]注意:一个模板内容只能一种标记,即尖括号(<>)和中括号([])不能同时使用。
三、${…}${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代。
四、基本常识●FTL区分大小写所以list是正确的FTL指令,而List不是;${name}和${NAME}是不同的。
●FTL标记不能够交叉,而应该正确的嵌套如下面的代码是错误的:<ul><#list animals as being><li>${} for ${being.price} Euros<#if use = "Big Joe">(except for you)</#list></#if> <#-- WRONG! --></ul>●如果使用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息。
为了避免这样的错,可使用默认值,有两种方法,如下:${user?default("123")}${user!"123"}●如果要输出bean.createTime时间,并且格式是“yyyy-MM-dd”。
${bean.beginDate?string('yyyy-MM-dd')}//如果空值的话会报错!//如何判断如果为空则不输出,如果不为空输出'yyyy-MM-dd'格式●判断存在与否exists[#list list as teacher][#if teacher.sex?exists && teacher.sex>50]姓名:${} 是老人家<br/>[/#if][/#list]●FreeMarker会忽略FTL标记中的空白字符●< 、</ 和指令之间不允许有空白字符< #if> <#-- WRONG! --></ #if> <#-- WRONG! -->五、指令格式●FTL标记有两种格式,这和HTML标记是类似的:⏹开始标记:<#directivename parameters> 结束标记:</#directivename>⏹空内容指令标记:<#directivename parameters/>●预定义指令和用户定义指令预定义指令用#,用户定义指令用@六、预定义指令●if指令●list指令<p>We have these animals:<table border=1><tr><th>Name<th>Price<#list animals as being><tr><td>${}<td>${being.price} Euros</#list></table>输出为:<p>We have these animals:<table border=1><tr><th>Name<th>Price<tr><td>mouse<td>50 Euros<tr><td>elephant<td>5000 Euros<tr><td>python<td>4999 Euros</table>●include指令七、用户定义指令用户定义指令要使用@替换#,如<@mydirective>...</@mydirective>。
Freemarker的基本语法及⼊门基础freemarker的基本语法及⼊门基础⼀、freemarker模板⽂件(*.ftl)的基本组成部分1. ⽂本:直接输出的内容部分2. 注释:不会输出的内容,格式为<#-- 注释内容 -->3. 取值(插值):代替输出数据模型的部分,格式为${数据模型}或#{数据模型}4. ftl指令:Freemarker指令,类似于HTML标记。
内建指令:开始标签:<#directivename parameter> 结束标签:</#directivename> 空标签:<#directivename parameter/>⾃定义指令:开始标签:<@directivename parameter> 结束标签:</@directivename> 空标签:<@directivename parameter/>⾄于什么是内建指令,什么是⾃定义指令我会在下⾯叙述到。
⼆、Freemarker语法及使⽤⽅法1. 取值(插值)指令及适⽤类型:(1) ${var}适⽤类型:java中常⽤的⼋⼤基本类型以及我们的String引⽤类型,但是,freemarker中boolean类型显⽰时true==yes false==no⽰例:在后台⽂件中定义变量String strVar = "世界你好";int intVar = 10;boolean booVar = true;在页⾯中获取变量:String获取:<font color="red"> ${strVar} </font><br>int获取:<font color="red"> ${intVar} </font><br>boolean获取:<font color="red"> ${booVar?string("yes","no")} </font>展⽰结果:String获取:世界你好int获取:10boolean获取:yes(2)${var!}适⽤类型:对 null 或者不存在的对象进⾏取值,可以设置默认值,例:${var!'我是默认值'} 即,有值时显⽰正常值,⽆值时⽰例:在后台⽂件中定义变量String strVar = "世界你好";String str = null;在页⾯中获取变量:String获取:<font color="red"> ${strVar!"我是空"} </font><br>str获取:<font color="red"> ${str!} </font><br>str获取:<font color="red"> ${str!"默认"} </font><br>展⽰结果:String获取:世界你好str获取:str获取:默认(3)${封装对象.属性}适⽤类型:对封装对象进⾏取值,例:${}⽰例:在后台⽂件中封装对象User[ name, age ]String name = "姓名";int age = 18;在页⾯中获取变量:name获取:<font color="red"> ${} </font><br>age获取:<font color="red"> ${User.age} </font><br>展⽰结果:name获取:姓名age获取:18(4)${date?String('yyyy-MM-dd')}适⽤类型:对⽇期格式进⾏取值,在这⾥我要强调的是,定义Date类型的变量时,java.util.Date⽆法输出⽇期,须使⽤java.sql.Date⽰例:在后台⽂件中定义变量java.sql.Date date = new Date().getTime();java.sql.Date time = new Date().getTime();java.sql.Date datetime = new Date().getTime();在页⾯中获取变量:date获取:<font color="red"> ${date?string('yyyy-MM-dd')} </font><br>time获取:<font color="red"> ${date?string('HH:mm:ss')} </font><br>datetime获取:<font color="red"> ${date?string('yyyy-MM-dd HH:mm:ss')} </font><br>展⽰结果:name获取:姓名age获取:18(5)${var?html}适⽤类型:转义HTML内容⽰例:在后台⽂件中封装变量Menu[ name, model ]Menu m = new Menu();m.setName(" freemarker ");m.setModel("<font color = 'red'>我只是个菜单</font>");在页⾯中获取变量:⾮转义获取:<font color="red"> ${m.model} </font><br>转义获取: ${m.model?html} </font><br>展⽰结果:⾮转义获取:我只是个菜单转义获取:<font color = 'red'>我只是个菜单</font>(6)<#assign num = 100 />适⽤类型:定义变量,⽀持计算和赋值⽰例:在页⾯中定义变量:<#assign num = 100 />num获取:<font color="red"> ${num)} </font><br>计算结果:<font color="red"> ${num * 10} </font><br>展⽰结果:num获取:100计算结果:1000(7)对List集合进⾏取值<#list list集合 as item>${item} --取值</#list>⽰例:List<String> strList = new ArrayList<String>();strList.add("第⼀个值");strList.add("第⼆个值");strList.add("第三个值");在页⾯中获取变量:<#list strList as item>${item!}<br/> --取值</#list>展⽰结果:第⼀个值第⼆个值第三个值(8)对Map集合进⾏取值<#list map?keys as key>${key}:${map[key]}</#list>⽰例:在后台⽂件中定义变量Map<String, Object> m = new HashMap<String, Object>(); m.put("name","姓名");m.put("age",18);m.put("sex","男");在页⾯中获取变量:<#list m?keys as key>${key}:${m[key]}</#list>展⽰结果:name:姓名age:18sex:男2. 条件判断指令:(1) if格式:<#if 条件>输出</#if>⽰例:在页⾯中定义变量并判断条件:<#assign age = 18 /><br><#if age == 18><font color="red"> age = 18</font></#if>展⽰结果:age = 18(2) if - else格式:<#if 条件>输出<#else>输出</#if>⽰例:在页⾯中定义变量并判断条件:<#assign age = 20 /><br><#if age == 18><font color="red"> age = 18</font><#else><font color="red"> age != 18</font></#if>展⽰结果:age != 18(3) if - elseif - else格式:<#if 条件1>输出<#elseif 条件2>输出<#else>输出</#if>在页⾯中定义变量并判断条件:<#assign age = 20 /><br><#if age > 18><font color="red">青年</font><#elseif age == 18><font color="red"> 成年</font><#else><font color="red"> 少年</font></#if>展⽰结果:成年(4) switch --常与case break default⼀起使⽤参数可为字符串格式:<#switch var><#case 条件1>输出<#break><#case 条件2>输出<#break><#default>输出</#switch>⽰例:在页⾯中定义变量并判断:<#switch var="星期⼀"><#case "星期⼀">油焖⼤虾<#break><#case "星期⼆">炸酱⾯<#break><#default>肯德基</#switch>展⽰结果:油焖⼤虾3. ⾃定义函数、⾃定义指令:(1) ⾃定义函数实现TemplateMthodModelEx(2) ⾃定义指令实现TemplateDirectiveModel⽰例:<@⾃定义指令名称⼊参(key-value格式) ; 出参(list格式)>运⾏条件</@⾃定义指令名称>PS:不同的返回值⽤逗号( , )间隔开4.常⽤内建函数、macro(宏指令)、function(函数指令):(1) 常⽤内建函数处理字符串:substring 截取字符串,包头不包尾(下标)cap_first 第⼀个字母⼤写end_with 以什么字母结尾contains 是否包含⽬标字符串date datetime time 转换成⽇期格式starts_with 以什么字母开头index_of 返回某个指定的字符串值在字符串中⾸次出现的位置(下标) last_index_of 获取指定字符出现的最后位置(下标)split 分隔trim 去两端空格处理数字:stringx?string("0.##") 变成⼩数点后⼏位round 四舍五⼊floor 去掉⼩数点ceiling 近1 变成整数first: 取List值第⼀个值last: 取List值最后⼀个值seq_contains: 是否包含指定字符seq_index_of: 指定字符所在位置size: 集合⼤⼩reverse: 集合倒序排列sort: 对集合进⾏排序sort_by: 根据某⼀个属性排序chunk: 分块处理其他:is_string: 是否为字符类型is_number: 是否为整数类型is_method: 是否为⽅法(): 判断整个变量has_content: 判断对象是否为空或不存在 eval:求值(2) macro(宏指令)调⽤:<@macro_name param />语法:<#macro 变量名参数><#nested/></#macro>(3) function(函数指令)调⽤:${function_name(param)}语法:<#function 变量名参数><#return></#function>。
简介:最简单的模板是普通HTML 文件(或者是其他任何文本文件—FreeMarker本身不属于HTML)。
当客户端访问页面时,FreeMarker 要发送HTML 代码至客户端浏览器端显示。
如果想要页面动起来,就要在HTML 中放置能被FreeMarker所解析的特殊部分。
${…}:FreeMarker将会输出真实的值来替换花括号内的表达式,这样被称为interpolations 插值,可以参考第上面一个示例的内容。
FTL tags 标签(FreeMarker模板的语言标签):FTL 标签和HTML 标签有一点相似,但是它们是FreeMarker的指令而且是不会直接输出出来的东西。
这些标签的使用一般以符号#开头。
(用户自定义的FTL 标签使用@符号来代替#,但这是更高级的主题了,后面会详细讨论)。
Comments 注释:FreeMarker的注释和HTML 的注释相似,但是它用<#--和-->来分隔。
任何介于这两个分隔符(包含分隔符本身)之间内容会被FreeMarker忽略,就不会输出出来了。
其他任何不是FTL 标签,插值或注释的内容将被视为静态文本,这些东西就不会被FreeMarker所解析,会被按照原样输出出来。
directives 指令就是所指的FTL 标签。
这些指令在HTML 的标签(如<table>和</table>)元素(如table 元素)中的关系是相同的。
(如果现在你还不能区分它们,把“FTL 标签”和“指令”看做是同义词即可。
)三大指令1.if指令<#if condition>...<#elseif condition2>...<#elseif condition3>......<#else>...其中空值判断可以写成<#if ?? ></#if>2.list指令遍历集合中的数据:<#list sequence as item>...</#list><#list>空值判断<#if bookList?size = 0></#list>例子:<#list employees.part1 as e>${}<#if e_has_next>集合还有数据,不是最后一个!<#else>已经没有数据了!<#/if></#list>3. include指令include 指令,我们可以插入其他文件的内容到当前的模板中。
freemarker 用法Freemarker 是一种模板引擎,广泛用于JavaWeb 开发中。
它提供了一种将数据模型与视图层分离的方式。
在使用Freemarker 进行开发时,我们首先需要了解一些基本的用法和语法规则。
本文将一步一步回答关于Freemarker 的常见问题,并介绍它的基本用法与功能。
一、什么是Freemarker?Freemarker 是一个模板引擎,它能够根据模板以及给定的数据模型生成最终的文本输出。
它使用简单明了的标记语言,允许开发者通过填充数据模型来动态生成页面内容。
二、如何引入Freemarker?要使用Freemarker,我们首先需要引入它的依赖。
通常情况下,我们可以在Maven 项目的pom.xml 文件中添加以下依赖:xml<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.27-incubating</version></dependency>三、如何配置Freemarker?在Spring Boot 项目中,我们可以使用`@Configuration` 注解来配置Freemarker。
通过`FreeMarkerConfigurer` 类,我们可以设置Freemarker 的一些参数,例如模板文件所在的路径、编码方式等。
java@Configurationpublic class FreemarkerConfig {@Beanpublic FreeMarkerConfigurer freeMarkerConfigurer() {FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();configurer.setTemplateLoaderPath("classpath:/templates");configurer.setDefaultEncoding("UTF-8");return configurer;}}在上述代码中,我们设置了模板所在的路径为classpath:/templates,这意味着我们的模板文件将在项目resources 目录下的templates 文件夹中。