雖然如今流行先後端分離開發和部署,可是有時候仍是須要用到服務端渲染頁面的。好比:須要考慮到SEO優化等問題的時候,FreeMark其實仍是頗有做用的。本人的博客原本是用React開發的,可是後來發現搜索引擎難以收集由JS渲染的頁面,因此前段時間,是用jQuery+FreeMark重寫了個人博客前端頁面。感興趣的朋友,能夠點擊下面的查看更多的連接跳轉至本人的博客。html
在springboot中,不推薦使用JSP(其實任何項目都不推薦使用JSP),而是推薦使用模板引擎,如FreeMark。其實使用模板引擎替代jsp的好處有不少,好比:FreeMark不須要便已成爲class,避免了內存溢出的可能性,等等。好處有不少,這裏就不深刻探討了。前端
引入依賴: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已經成功了。前後端分離
${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的方法。雖然如今主流是先後端分離開發和部署,可是在某些時候,或者說一些小項目中,仍是有可能用到後端渲染頁面的狀況的。