springboot 整合Freemarker

什么是Freemarker

FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

特点

  1. 轻量级模版引擎,不需要Servlet环境就可以很轻松的嵌入到应用程序中
  2. 能生成各种文本,如html,xml,java,等
  3. 入门简单,它是用java编写的,很多语法和java相似

工作原理

在这里插入图片描述

为什么用Freemarker

SpringBoot虽然支持JSP,但是官方不推荐使用。
SpringBoot官方推荐使用Thymeleaf模板引擎,但是Thymeleaf并没有Freemarker好用。

Freemarker与Thymeleaf的比较

thymeleaf优点:
1.静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。
2.springboot官方推荐方案。
thymeleaf缺点:
1.模板必须符合xml规范,就这一点就可以判死刑!太不方便了!js脚本必须加入/<![CDATA[/标 识,否则一个&符号就会导致后台模板合成抛异常,而且错误信息巨不友好,害得我调试了好几个小时才明白是怎么回事。js里面还好办,这样是在html里面含有&等符号,还需要转义?忒麻烦了!
2.就上面一条就够了。
freemarker优点:
1.和jsp规范基本一致,大多数程序员几乎无学习成本。
freemarker缺点:
null

Freemarker的使用

导入坐标

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

Freemarker模板文件扩展名为.ftl,放在templates文件夹中
如果扩展名想改变,可以通过在application配置文件中添加

spring.freemarker.suffix=.html

更改后就会找.html结尾的文件模板

取值
对象:
$ {值/对象名.属性名},如果对象可能为null,则使用:$ {值/对象名.属性名!“双引号中可选,如果为null时显示什么”},
boolean 类型:

  ${布尔值?string("true","flase")}

日期类型:

 ${日期值?string("yyyy-MM-dd")}

不被当html 解析

${值/对象名.属性名?html}

在页面中自定义变量:

  <#assign 属性名 = 属性值 />

对List集合取值:

<#list 要遍历的集合名 as item>
 ${item} ­­取值
</#list>

对Map集合取值:

    <#list 集合名?keys as key>
$ {key}: $ {集合名[key]}
</#list>

If判断:

<#if 条件>
条件成功后显示的内容
</#if>

If-else判断:

<#if 条件>
条件成功后显示的内容
<#else>
上面条件不成立后显示的内容
</#if>

If-elseif-else判断:

<#if 条件1>
条件1成功后显示的内容
<#elseif 条件2>
条件2成功后显示的内容
<#elseif  条件...>
...
<#else>
上面条件不成立后显示的内容
</#if>

引入其他模板:
<#include “/copyright_footer.ftl”>

静态文件的引入
静态文件(Js,Css,图片等)都放在resources/static中,结构如下:
static
|–js
index.js
|–css
index.css
|–imgs
index.png
引入方式:

< script src="/js/index.js" ></script>
< link rel="stylesheet" type="text/css" href="/css/index.css" />
< img src="/imgs/index.png" />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值