總結而已,不喜勿噴~html
模板引擎(這裏特指用於Web開發的模板引擎)是爲了使用戶界面與業務數據(內容)分離而產生的,它能夠生成特定格式的文檔,用於網站的模板引擎就會生成一個標準的HTML文檔。java
模板引擎能夠讓(網站)程序實現界面與數據分離,業務代碼與邏輯代碼的分離,這就大大提高了開發效率,良好的設計也使得代碼重用變得更加容易。web
(性能稍差,不看性能狀況下可用)spring
thymeleaf具體用法請看:apache
<!-- 引用thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
# 是否啓用thymeleaf模板解析 spring.thymeleaf.enabled=true # 是否開啓模板緩存(建議:開發環境下設置爲false,生產環境設置爲true) spring.thymeleaf.cache=false # 檢查本地是否存在對應模板 spring.thymeleaf.check-template-location=true # 模板的內容類型設置,默認爲text/html spring.thymeleaf.content-type=text/html # 模板的編碼設置,默認UTF-8 spring.thymeleaf.encoding=UTF-8 # 設置能夠被解析的視圖,以逗號,分隔 #spring.thymeleaf.view-names= # 排除不須要被解析視圖,以逗號,分隔 #spring.thymeleaf.excluded-view-names= # 模板模式設置,默認爲HTML5 #spring.thymeleaf.mode=HTML5 # 前綴設置,SpringBoot默認模板放置在classpath:/template/目錄下 spring.thymeleaf.prefix=classpath:/templates/ # 後綴設置,默認爲.html spring.thymeleaf.suffix=.html # 模板在模板鏈中被解析的順序 #spring.thymeleaf.template-resolver-order=
在src/main/resources中建立templates文件夾,而後在該文件夾下建立hello.htmltomcat
<!DOCTYPE html> <html> <head> <!-- 此處meta要閉合 --> <meta charset="UTF-8"/> <title>Hello world</title> </head> <body> <p th:text="'Hello!' + ${name}" ></p> </body> </html>
在thymeleaf,若是遇到標籤沒有閉合,可能會報異常springboot
package com.springboot.controller; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class TemplateController { // 映射地址是:/templates/hello // 返回html模板 @RequestMapping("/hello") public String hello(Map<String,Object> map){ map.put("name", "TestName"); return "hello"; } }
輸入地址: http://localhost:8080/hello 測試是否成功session
freemarker具體用法請看:mvc
<!-- 引用freemarker --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
#Freemark模板引擎 # 是否使用freemarker模板 spring.freemarker.enabled=true # 是否容許重複請求 spring.freemarker.allow-request-override=false # 是否緩存 spring.freemarker.cache=false # 檢查模板位置是否存在 spring.freemarker.check-template-location=true # 設置編碼格式 spring.freemarker.charset=UTF-8 # 模板的內容類型設置 spring.freemarker.content-type=text/html # 前綴設置 默認爲 "" spring.freemarker.prefix= # 後綴設置 默認爲 .ftl spring.freemarker.suffix=.ftl # 在合併以前設置是否應該將全部請求屬性添加到模型中 spring.freemarker.expose-request-attributes=false # 在合併以前設置是否應該將全部HttpSession屬性添加到模型中 spring.freemarker.expose-session-attributes=false # 是否設置公開使用在springMacroRequestContext下的宏設置 spring.freemarker.expose-spring-macro-helpers=false # 在構建URL時附加到視圖名稱的後綴。 spring.freemarker.template-loader-path=classpath:/templates/
建立一個後綴名爲ftl的文件,文件書寫格式按照html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <title>Hello world</title> </head> <body> <span>名字:${user}</span> </body> </html>
package com.springboot.controller; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class TemplateController { /** * 映射地址是:/templates/helloFtl * 返回ftl模板 */ @RequestMapping("/hello") public String hello(Map<String,Object> map){ map.put("name", "TestName"); return "hello"; } }
輸入地址: http://localhost:8080/hello 測試是否成功
<!-- 對JSP的解析支持 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- 對JSTL的支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>
# 頁面默認前綴目錄 spring.mvc.view.prefix=/WEB-INF/ # 響應頁面默認後綴 spring.mvc.view.suffix=.jsp
建立hello.jsp放入src/main/webapp/WEB-INF目錄下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Test JSP</title> </head> <body> <span>JSP名字:${name}</span> </html>
package com.springboot.controller; import java.util.Map; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class TemplateController { @RequestMapping("/hello") public String hello(Map<String,Object> map){ map.put("name", "TestName"); return "hello"; } }
輸入地址: http://localhost:8080/hello 測試是否成功