<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Thymeleaf是新一代Java模板引擎,類似於Velocity、FreeMarker等傳統Java模板引擎。與傳統Java模板引擎不同的是,Thymeleaf支援HTML原型,既可以讓前端工程師在瀏覽器中直接開啟檢視樣式,也可以讓後端工程師結合真實資料檢視顯示效果。同事,Spring Boot提供了Thymeleaf自動化設定解決方案,因此在Spring Boot中使用Thymeleaf 非常方便。Spring Boot整合Thymeleaf 主要可通過如下步驟
新建一個Spring Boot工程,然後新增spring-boot-starter-web 和spring-boot-starter-thymeleaf 依賴
<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>
Spring Boot為Thymeleaf提供了自動化設定類ThymeleafAutoConfiguration,相關的設定屬性在ThymeleafProperties 類中,ThymeleafProperties類部分原始碼如下:
@ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8; public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html"; }
由此設定可以看到,預設的模板位置在classpath:/templates/,預設的模板字尾名為.html。如果使用IDEA建立Spring Boot 專案,templates資料夾預設會建立。如需對預設的Thymeleaf 設定引數進行自定義設定,可以在application.properties 中進行設定,部分常見設定如下:
#是否開啟快取,開發時可設定為false,預設為true
spring.thymeleaf.cache=false
#檢查模版是否存在,預設為true
spring.thymeleaf.check-template=true
#檢查模版位置是否存在,預設為true
spring.thymeleaf.check-template-location=true
#模版檔案編碼
spring.thymeleaf.encoding=UTF-8
#模版檔案位置
spring.thymeleaf.prefix=classpath:/templates/
#Content-Type設定
spring.thymeleaf.servlet.content-type=text/html
#模版檔案字尾
spring.thymeleaf.suffix=.html
建立Book實體類,然後在Controller中返回ModelAndView,如下:
public class Book { private int id; private String name; private String author; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } }
@RestController public class BookController { @GetMapping(value = "/books") public ModelAndView books(){ List<Book> books = new ArrayList<>(); Book b1 = new Book(); b1.setId(1); b1.setAuthor("唐家三少"); b1.setName("斗羅大陸Ⅰ"); Book b2 = new Book(); b2.setId(2); b2.setAuthor("唐家三少"); b2.setName("斗羅大陸Ⅱ"); books.add(b1); books.add(b2); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("books",books); modelAndView.setViewName("books"); return modelAndView; } }
在resources目錄下的templates目錄中建立books.html,如下:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>圖書列表</title> </head> <body> <table border="1"> <tr> <td>圖書編號</td> <td>圖書名稱</td> <td>圖書作者</td> </tr> <tr th:each="book:${books}"> <td th:text="${book.id}"></td> <td th:text="${book.name}"></td> <td th:text="${book.author}"></td> </tr> </table> </body> </html>
程式碼解釋:
瀏覽器輸入"http://localhost:8081/books",檢視執行結果,如圖:
FreeMarker 是一個非常古老的模板引擎,可以用在Web環境或者非Web環境中。FreeMarker 需要經過解析才能在瀏覽器中展示出來。FreeMarker 不僅可以用來設定HTML頁面模板,也可以作為電子郵件模板、組態檔模板以及原始碼模板。整合步驟如下:
建立Spring Boot專案,然後新增spring-boot-starter-web和spring-boot-starter-freemarker依賴,如下:
<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>
Spring Boot對FreeMarker 也提供了自動化設定類FreeMarkerAutoConfiguration,相關的設定屬性在FreeMarkerProperties中,FreeMarkerProperties的部分原始碼如下:
@ConfigurationProperties(prefix = "spring.freemarker") public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties { public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/"; public static final String DEFAULT_PREFIX = ""; public static final String DEFAULT_SUFFIX = ".ftl"; ... }
FreeMarker 預設模板位置和Thymeleaf 一樣,都在classpath:/templates/中,預設檔案字尾是.ftl,開發者可以在application.properties 中對這些預設設定進行修改,如下:
控制器和Thymeleaf 中的控制器一樣,這裡不再重複
在resources目錄下的templates目錄中建立books.ftl 檔案,如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>圖書列表FreeMarker</title> </head> <body> <table border="1"> <tr> <td>圖書編號</td> <td>圖書名稱</td> <td>圖書作者</td> </tr> <#if books ?? && (books?size>0)> <#list books as book> <tr> <td>${book.id}</td> <td>${book.name}</td> <td>${book.author}</td> </tr> </#list> </#if> </table> </body> </html>
程式碼解釋:
先判斷model中的books部位可控並且books中有資料,然後再進行遍歷
瀏覽器輸入"http://localhost:8081/books",檢視執行結果,如圖:
到此這篇關於SpringBoot整合Thymeleaf與FreeMarker檢視層技術的文章就介紹到這了,更多相關SpringBoot整合檢視層內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45