一种基于模版和要改变的数据,并用来生成输出文本(html、电子邮件、配置文件,源代码)的通用工具。他不是面向最终用户的,而是一个Java类库;
freemarker是免费的,其模版编写为freemarker template language(FTL freemarker模版语言),属于简单的专用语言。需要准备数据在起真实编程语言中显示,例如数据库查询和业务运算、之后模版显示已经准备好的数据;而在模版中主要用户如何展现数据;
也就是说:模版(template)+数据(java object) ==freemarker==》作用下成为要的output
Jsp、freemarker、(Thymeleaf 、Velocity )
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring‐boot‐starter‐parentartifactId>
<version>2.1.3.RELEASEversion>
parent>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring‐boot‐starter‐freemarkerartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring‐boot‐starter‐webartifactId>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
<dependency>
<groupId>com.squareup.okhttp3groupId>
<artifactId>okhttpartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring‐boot‐starter‐testartifactId>
dependency>
<dependency>
<groupId>org.apache.commonsgroupId>
<artifactId>commons‐ioartifactId>
dependency>
server:
port: 8088 #服务端口
servlet:
context‐path: /test‐freemarker
spring:
application:
name: test‐freemarker #指定服务名
freemarker:
charset: UTF‐8
content‐type: text/html
suffix: .ftl
enabled: true
# 模版的加载路径
template‐loader‐path: classpath:/templates/
resources:
add‐mappings: false #关闭工程中默认的资源处理
mvc:
throw‐exception‐if‐no‐handler‐found: true #出现错误时直接抛出异常
Freemarker静态化依赖数据模型和模板,一般在方法中的形参map即为freemarker静态化所需要的数据模型,在map中填充数据;
注意:关于freemarker的指令需要知道
<#list stus as stu>
<tr>
<td>${stu_index + 1}td>
<td>${stu.name}td>
<td>${stu.age}td>
<td>${stu.mondy}td>
tr>
${stuMap['stu1'].name}<br/>
${stuMap.stu1.name}<br/>
<#list stuMap?keys as k>
<tr>
<td>${k_index + 1}td>
<td>${stuMap[k].name}td>
<td>${stuMap[k].age}td>
<td >${stuMap[k].mondy}td>
tr>
if 指令即判断指令,是常用的FTL指令,freemarker在解析时遇到if会进行判断,条件为真则输出if中间的内容,否则跳过内容不再输出。
demo:
<#if stu.name =='小明'>
或者gt:判断左边值是否大于右边值
=或者gte:判断左边值是否大于等于右边值
在freemarker中可以访问Request、Session等内置对象
Request: 用于获取Request对象中的attribute对象。
Session:用于获取Session对象中的attribute对象。
RequestParameters:用于获取Request对象的parameter参数(浏览器端发送的请求数据)
注意
使用内置对象需要先暴露内置对象==》通过配置文件
spring:
freemarker:
request‐context‐attribute: rc #把Spring的RequestContext对象暴露为变量rc
expose‐request‐attributes: true
expose‐session‐attributes: true