SpringBoot Freemarker基礎(chǔ)配置與使用方式
1.基礎(chǔ)配置
1.1引入依賴(lài)
<!-- 引入freemarker模板引擎的依賴(lài) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>1.2在application.properties配置文件中添加如下配置:
# 是否開(kāi)啟thymeleaf緩存,本地為false,生產(chǎn)建議為true spring.freemarker.cache=false spring.freemarker.charset=UTF-8 spring.freemarker.allow-request-override=false spring.freemarker.check-template-location=true #類(lèi)型 spring.freemarker.content-type=text/html spring.freemarker.expose-request-attributes=true spring.freemarker.expose-session-attributes=true # #文件后綴 spring.freemarker.suffix=.ftl #路徑 .ftl文件就創(chuàng)建在templates下面或者子目錄 spring.freemarker.template-loader-path=classpath:/templates/
2.基礎(chǔ)使用
首先我在controller類(lèi)中編寫(xiě)一個(gè)測(cè)試接口用來(lái)測(cè)試使用,編寫(xiě)內(nèi)容如下
@Controller
public class FreeMarkerController {
Map<String ,Object> map = new HashMap<>();
List<Object> list = new ArrayList();
@GetMapping("/freemaker/{id}/{name}")
public String demo(@PathVariable("id")String id ,@PathVariable("name") String name,Model model){
map.clear();
map.put("id",id);
map.put("name",name);
list.add(2);
list.add(4);
map.put("aa",null);
model.addAttribute("map",map);
model.addAttribute("list",list);
model.addAttribute("date",new Date());
return "index";
}
}
以下所有變量都是有上面接口提供
2.1調(diào)用map類(lèi)型數(shù)據(jù),實(shí)體類(lèi)也可使用此格式調(diào)用屬性
/*可直接獲取id對(duì)應(yīng)的v值*/
id:${map.id}
name:${map.name}
2.2集合調(diào)用,set集合也可用此格式調(diào)用相應(yīng)的元素
list01:${list[0]}
list02:${list[1]}
2.3,字符串拼接的兩種方法
${"你好啊${map.name}"}
${"你好啊"+map.name}
2.4FreeMarker表達(dá)式中支持“+”、“-”、“*”、“/”、“%”運(yùn)算符
${list[1]+list[0]}
${list[1]-list[0]}
${list[1]*list[0]}
${list[1]/list[0]}
${list[1]%list[0]}
2.5表達(dá)式中支持的比較運(yùn)算符有如下幾種:
1. =(或者==):判斷兩個(gè)值是否相等; 2. !=:判斷兩個(gè)值是否不相等; 注: =和!=可以用作字符串、數(shù)值和日期的比較,但兩邊的數(shù)據(jù)類(lèi)型必須相同。而且FreeMarker的比較是精確比較,不會(huì)忽略大小寫(xiě)及空格。 3. >(或者gt):大于 4. >=(或者gte):大于等于 5. <(或者lt):小于 6. <=(或者lte):小于等于 注: 上面這些比較運(yùn)算符可以用于數(shù)字和日期,但不能用于字符串。大部分時(shí)候,使用gt比>有更好的效果,因?yàn)镕reeMarker會(huì)把>解釋成標(biāo)簽的結(jié)束字符??梢允褂美ㄌ?hào)來(lái)避免這種
2.6時(shí)間格式轉(zhuǎn)換
${date?string("yyyy-MM-dd")}
2.7支持邏輯表達(dá)式
FreeMarker支持邏輯運(yùn)算但是只支持布爾型邏輯運(yùn)算兩個(gè)值進(jìn)行比較運(yùn)算的的時(shí)候需要添加括號(hào)才能進(jìn)行邏輯運(yùn)算,一般用于指令中 1. &&: 邏輯與; 2. ||:邏輯或; 3. !:邏輯非 邏輯運(yùn)算符只能用于布爾值。
2.8FreeMarker無(wú)法理解null值
FreeMarker的變量必須賦值,否則就會(huì)拋出異常。而對(duì)于FreeMarker來(lái)說(shuō),null值和不存在的變量是完全一樣的,因?yàn)镕reeMarker無(wú)法理解null值。
FreeMarker提供兩個(gè)運(yùn)算符來(lái)避免空值:
1.!運(yùn)算
1.1若是msg不存在不報(bào)異常默認(rèn)空值,若是不使用!會(huì)報(bào)異常<br>
${msg!}
1.2若是存在則輸出,若是不存在則默認(rèn)為abc<br>
${map.a!"abc"}<br>
2.??返回布爾值一般用在指令中下面會(huì)有引用此處不解釋<br>
2.9 if指令
<#if map.aa?? >
存在
<#else >
不存在
</#if>
<br>
<#if (list[0]>=3) >
優(yōu)秀
<#elseif (list[0]>=2)>
良好
<#else >
差勁
</#if>
2.10 list指令 遍歷
<#list list as li>
${li}<br>
</#list>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
idea沒(méi)法識(shí)別springboot項(xiàng)目的原因解決及辦法
IDEA無(wú)法識(shí)別Spring Boot項(xiàng)目可能是由于Lombok依賴(lài)未正確解析所致,原pom.xml中未指定Lombok版本號(hào),導(dǎo)致依賴(lài)下載失敗,下面就來(lái)詳細(xì)的介紹一下解決方法,感興趣的可以了解一下2025-09-09
Spring Boot集成Spring Cloud Eureka進(jìn)行服務(wù)治理的方法
本文通過(guò)詳細(xì)的步驟和代碼示例,介紹了如何在Spring Boot中集成Spring Cloud Eureka進(jìn)行服務(wù)治理,通過(guò)這種方式,可以有效地管理和維護(hù)微服務(wù)架構(gòu)中的服務(wù),感興趣的朋友跟隨小編一起看看吧2024-11-11
Spring Cloud微服務(wù)架構(gòu)的構(gòu)建:分布式配置中心(加密解密功能)
這篇文章主要給大家介紹了關(guān)于Spring Cloud微服務(wù)架構(gòu)的構(gòu)建:分布式配置中心(加密解密)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2018-05-05
Java實(shí)現(xiàn)將列表數(shù)據(jù)導(dǎo)出為PDF文件并添加水印
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)把列表數(shù)據(jù)導(dǎo)出為PDF文件,同時(shí)加上PDF水印,文中的示例代碼講解詳細(xì),需要的可以參考下2024-02-02
Java實(shí)現(xiàn)幾種常見(jiàn)排序算法代碼
排序(Sorting) 是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,它的功能是將一個(gè)數(shù)據(jù)元素(或記錄)的任意序列,重新排列成一個(gè)關(guān)鍵字有序的序列2013-09-09
淺談Java序列化和反序列化為何要實(shí)現(xiàn)Serializable接口
這篇文章主要介紹了淺談Java序列化和反序列化為何要實(shí)現(xiàn)Serializable接口,序列化最重要的作用是在傳遞和保存對(duì)象時(shí).保證對(duì)象的完整性和可傳遞性,對(duì)象轉(zhuǎn)換為有序字節(jié)流,以便在網(wǎng)絡(luò)上傳輸或者保存在本地文件中,需要的朋友可以參考下2023-12-12

