Spring Boot 整合模板引擎 Freemaker、thymeleaf

1.經常使用的 Spring Boot 2.x 模板引擎和官方推薦案例html

1)JSP(後端渲染,消耗性能)java

Java Server Pages 動態網頁技術,由應用服務器中的 JSP 引擎來編譯和執行,再將生成的整個頁面返回給客戶端。優勢是:能夠寫java代碼、支持表達式語言(el、jstl)、內建函數。spring

但 JSP 本質上是 Servlet,它很是佔用 JVM 內存。Java Web 官方推薦,但 Spring Boot 不推薦 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-jsp-limitations後端

2)Freemarker
瀏覽器

FreeMarker Template Language(FTL) 文件通常保存爲 xxx.ftl。嚴格依賴 MVC 模式,不依賴 Servlet 容器(不佔用JVM內存),支持內建函數緩存

3)Thymeleaf (主推)
服務器

輕量級的模板引擎(負責邏輯業務的不推薦,解析 DOM 或者 XML 會佔用多的內存)。能夠直接在瀏覽器中打開且正確顯示模板頁面。直接是 html 結尾,能夠直接編輯。session

 

2.Spring Boot 整合模板引擎 freemarkerapp

步驟1:引入 Freemarker 相關 maven 依賴dom

<!-- 引入freemarker模板引擎的依賴 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

步驟2:Freemarker 基礎配置

# 是否開啓thymeleaf緩存,本地爲false,生產建議爲true
spring.freemarker.cache=false

spring.freemarker.charset=UTF-8
spring.freemarker.allow-request-override=false
spring.freemarker.check-template-location=true

#類型
spring.freemarker.content-type=text/html

spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true

#文件後綴
spring.freemarker.suffix=.ftl
#路徑
spring.freemarker.template-loader-path=classpath:/templates/

步驟3:新建 .ftl 文件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
  </head>
  <body>
    <h1> ${setting.name} </h1>
    <h1> ${setting.domain} </h1>
  </body>
</html>

步驟4:簡單測試代碼編寫和訪問

@Controller
@RequestMapping("/freemaker")
public class FreemakerController {
    @Autowired
    private ServerSettings setting;
    
    @GetMapping("hello")
    public String index(ModelMap modelMap){
        
        modelMap.addAttribute("setting", setting);
        
        return "fm/index";  //不用加後綴,在配置文件裏面已經指定了後綴
    }
}

 

3.Spring Boot 整合模板引擎 thymeleaf

官網地址:https://www.thymeleaf.org/doc/articles/thymeleaf3migration.html

步驟1:引入 thymeleaf 相關 maven 依賴

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

步驟2:thymeleaf 基礎配置

#開發時關閉緩存,否則無法看到實時頁面
spring.thymeleaf.cache=false
spring.thymeleaf.mode=HTML5
#前綴
spring.thymeleaf.prefix=classpath:/templates/
#編碼
spring.thymeleaf.encoding=UTF-8
#類型
spring.thymeleaf.content-type=text/html
#名稱的後綴
spring.thymeleaf.suffix=.html

步驟3:新建 .html 文件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
  </head>
  <body>
    模板引擎整合thymeleaf  admin/info.html
    <h1 >測試內容,未加th表達式</h1>
    <h1 th:text="${setting.name}">測試內容</h1>
  </body>
</html>

步驟4:簡單測試代碼編寫和訪問

@Controller
@RequestMapping("/tyhmeleaf")
public class ThymeleafController {
    @Autowired
    private ServerSettings setting;

    @GetMapping("hello")
    public String index(){
        return "index";  //不用加後綴,在配置文件裏面已經指定了後綴
    }
    
    @GetMapping("info")
    public String admin(ModelMap modelMap){
        modelMap.addAttribute("setting", setting); 
        return "admin/info";  //不用加後綴,在配置文件裏面已經指定了後綴
    }
}

注意:$表達式只能寫在th標籤內部

快速入門:https://www.thymeleaf.org/doc/articles/standarddialect5minutes.html

相關文章
相關標籤/搜索