一蔫仙、Thymeleaf和FreeMarker優(yōu)缺點
1.1Thymeleaf
Thymeleaf是個XML/XHTML/HTML5模板引擎,可以用于Web與非Web應(yīng)用蝗罗。Thymeleaf的主要目標在于提供一種可被瀏覽器正確顯示的栖忠、格式良好的模板創(chuàng)建方式咽瓷,因此也可以用作靜態(tài)建模设凹。你可以使用它創(chuàng)建經(jīng)過驗證的XML與HTML模板。相對于編寫邏輯或代碼茅姜,開發(fā)者只需將標簽屬性添加到模板中即可闪朱。接下來月匣,這些標簽屬性就會在DOM(文檔對象模型)上執(zhí)行預先制定好的邏輯。
優(yōu)點
1奋姿、靜態(tài)html嵌入標簽屬性锄开,瀏覽器可以直接打開模板文件,便于前后端聯(lián)調(diào)称诗。
2萍悴、springboot官方推薦方案。
缺點
1寓免、模板必須符合xml規(guī)范
2癣诱、html必須添加<html xmlns:th="http://www.thymeleaf.org">
1.2FreeMarker
FreeMarker是一個用Java語言編寫的模板引擎,它基于模板來生成文本輸出袜香。FreeMarker與Web容器無關(guān)撕予,即在Web運行時,它并不知道Servlet或HTTP蜈首。它不僅可以用作表現(xiàn)層的實現(xiàn)技術(shù)实抡,而且還可以用于生成XML,JSP或Java 等欢策。目前企業(yè)中:主要用Freemarker做靜態(tài)頁面或是頁面展示
優(yōu)點
1吆寨、不能編寫java代碼,可以實現(xiàn)嚴格的mvc分離
2猬腰、性能非常不錯
3鸟废、對jsp標簽支持良好
4、內(nèi)置大量常用功能姑荷,使用非常方便
5盒延、宏定義(類似jsp標簽)非常方便
6、使用表達式語言?
缺點
1鼠冕、不是官方標準
2添寺、用戶群體和第三方標簽庫沒有jsp多</pre>
二、thymeleafDemo應(yīng)用
2.1Springboot的pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--thymeleaf模版引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
2.2默認配置文件(支持yml格式)
spring:
thymeleaf:
cache: false
# 以下是默認配置
# prefix: classpath:/templates/
# suffix: .html
# mode: HTML5
# encoding: UTF-8
# content-type: text/html
2.3創(chuàng)建啟動類
@Controller
@SpringBootApplication
public class SpringbootThymeleafApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootThymeleafApplication.class,args);
}
@RequestMapping("/")
public String hello(Map<String,Object> map){
map.put("name","xiaoqiaobian");
return "hello";
}
}
2.4創(chuàng)建XML/XHTML/HTML5模版
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello World!</title>
</head>
<body>
Hello World <p th:text="${name}"></p>
</body>
</html>
2.5運行啟動類
訪問http://localhost:8080/
demo測試成功
三懈费、FreeMarker應(yīng)用
3.1Springboot的pom文件
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--freemarker模版引擎依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
2.2創(chuàng)建application.properties手動添加配置文件
## Freemarker 配置
# 設(shè)置緩存開啟狀態(tài)
spring.freemarker.cache= false
# 模版的路徑
spring.freemarker.template-loader-path= classpath:/templates/ftl/
# 設(shè)置頁面編碼格式
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
# 設(shè)置文檔類型
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true
spring.freemarker.request-context-attribute=request
# 設(shè)置模版后綴名
spring.freemarker.suffix=.ftl
2.3創(chuàng)建啟動類
@SpringBootApplication
public class SpringbootFreemarkerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootFreemarkerApplication.class,args);
}
}
2.4創(chuàng)建AppContoller
@Controller
public class AppController {
@RequestMapping("/")
public String hello(Map<String,Object> map){
map.put("name","xiaoqiaobian");
return "lucky";
}
}
2.5創(chuàng)建JSP/XHTML/HTML5模版
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我是一個jsp</title>
</head>
<body>
Lucky ${name}!!!!
</body>
</html>
2.5運行啟動類
訪問http://localhost:8080/
demo測試成功