「快學springboot」SpringBoot整合freeMark模板引擎

前言

雖然如今流行先後端分離開發和部署,可是有時候仍是須要用到服務端渲染頁面的。好比:須要考慮到SEO優化等問題的時候,FreeMark其實仍是頗有做用的。本人的博客原本是用React開發的,可是後來發現搜索引擎難以收集由JS渲染的頁面,因此前段時間,是用jQuery+FreeMark重寫了個人博客前端頁面。感興趣的朋友,能夠點擊下面的查看更多的連接跳轉至本人的博客。html

在springboot中,不推薦使用JSP(其實任何項目都不推薦使用JSP),而是推薦使用模板引擎,如FreeMark。其實使用模板引擎替代jsp的好處有不少,好比:FreeMark不須要便已成爲class,避免了內存溢出的可能性,等等。好處有不少,這裏就不深刻探討了。前端

springboot引入FreeMark

引入依賴:java

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
複製代碼

配置FreeMark:spring

# freeMark config
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
spring.freemarker.suffix=.ftl
spring.freemarker.template-loader-path=classpath:/static/
複製代碼

這裏,我把freemark的路勁配置到了static目錄下。完成這些步驟,FreeMark已經配置完成了。後端

能夠經過一個簡單的頁面來測試下freeMark。在static文件夾中建立index.ftlspringboot

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Freem測試</title>
</head>
<body>
這是一個FreeMark。後臺傳過來的數據:${data}
</body>
</html>
複製代碼

這個freemark頁面,展現從controller傳過來的"data"。bash

新建一個PageController.classsession

@Controller
public class PageController {

    @GetMapping(value = "/")
    public String index(HttpServletRequest request){
        request.setAttribute("data","Hello World!!!");
        return "index";
    }

}

複製代碼

這裏千萬別寫RestController,不然會報錯的。這裏在request中,設置了data爲Hello World!!!,啓動項目查看效果:app

這已經代表,SpringBoot配置FreeMark已經成功了。前後端分離

FreeMark經常使用用法

取值
${user}
若是須要取對象裏的某個屬性,則使用"."便可
${user.name}
複製代碼
遍歷
<#list list as item>
	${item.name}
</#list>

<#list ["星期一", "星期二", "星期三"] as day>
	${day}
</#list>
複製代碼
條件
<#if username == "boss">
	Hi boss!
</#if>

<#if username == "boss">
	Hi boss!
<#else>
	Hi!
</#if>
複製代碼
設置默認值

若是沒有默認值,FreeMark會報錯

${varname!default_value}
複製代碼
日期格式化
${date?string("yyyy-MM-dd HH:mm:ss")}

複製代碼

用法有不少,這裏無法一一列舉出來。只能列舉出比較經常使用的。這些東西不必去記住它,能夠在須要的時候去查一下文檔便可。

總結

本文介紹了SpringBoot整合FreeMark的方法。雖然如今主流是先後端分離開發和部署,可是在某些時候,或者說一些小項目中,仍是有可能用到後端渲染頁面的狀況的。

相關文章
相關標籤/搜索