springboot依賴太復雜了,spring boot 教程(二)模板依賴

 2023-12-06 阅读 33 评论 0

摘要:在Spring boot中有一個很重要的概念,叫做約定優于配置——軟件開發的簡約原則。所以Spring boot會按照約定好的文件位置去找我們的包和類。 默認配置 Spring Boot默認提供靜態資源目錄位置需置于classpath下,目錄名需符合如下規則: /static/public/resou
在Spring boot中有一個很重要的概念,叫做約定優于配置——軟件開發的簡約原則。所以Spring boot會按照約定好的文件位置去找我們的包和類。

默認配置

Spring Boot默認提供靜態資源目錄位置需置于classpath下,目錄名需符合如下規則:

  • /static
  • /public
  • /resources
  • /META-INF/resources

舉例:我們可以在src/main/resources/目錄下創建static,在該位置放置一個圖片文件。啟動程序后,

springboot依賴太復雜了、嘗試訪問http://localhost:8080/test.jpg。如能顯示圖片,配置成功。

渲染Web頁面

在之前的示例中,我們都是通過@RestController來處理請求,所以返回的內容為json對象。那么如果需要渲染html頁面的時候,我們可以使用模板。


模板引擎

在動態HTML實現上Spring Boot依然可以完美勝任,并且提供了多種模板引擎的默認配置支持,所以在推薦的模板引擎下,我們可以很快的上手開發動態網站。

Spring Boot提供了默認配置的模板引擎主要有以下幾種:

  • Thymeleaf
  • FreeMarker
  • Velocity
  • Groovy
  • Mustache

Spring Boot建議使用這些模板引擎,避免使用JSP,若一定要使用JSP將無法實現Spring Boot的多種特性。

當你使用上述模板引擎中的任何一個,它們默認的模板配置路徑為:src/main/resources/templates

主頁面

maven依賴本地jar包、我們可以先寫一個主頁面,然后再里面給他分配幾個模板頁面;

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>Insert title here</title>
  6. </head>
  7. <body>
  8. <H1><a href="thymeleaf">Thymeleaf</a></H1>
  9. <H1><a href="freeMarker">FreeMarker</a></H1>
  10. <H1><a href="velocity">Velocity</a></H1>
  11. <H1><a href="groovy">Groovy</a></H1>
  12. <H1><a href="mustache">Mustache</a></H1>
  13. </body>
  14. </html>

Thymeleaf


Thymeleaf是一個XML/XHTML/HTML5模板引擎,可用于Web與非Web環境中的應用開發。它是一個開源的Java庫,基于Apache License 2.0許可,由Daniel Fernández創建,該作者還是Java加密庫Jasypt的作者。

Thymeleaf提供了一個用于整合Spring MVC的可選模塊,在應用開發中,你可以使用Thymeleaf來完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目標在于提供一種可被瀏覽器正確顯示的、格式良好的模板創建方式,因此也可以用作靜態建模。你可以使用它創建經過驗證的XML與HTML模板。相對于編寫邏輯或代碼,開發者只需將標簽屬性添加到模板中即可。接下來,這些標簽屬性就會在DOM(文檔對象模型)上執行預先制定好的邏輯。

編寫HTML代碼,我們把HTML放入到

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. <h1><a th:href="${host}">Hello Boot Thymeleaf</a></h1>
  9. </body>
  10. </html>

可以看到Thymeleaf主要以屬性的方式加入到html標簽中,瀏覽器在解析html時,當檢查到沒有的屬性時候會忽略,所以Thymeleaf的模板可以通過瀏覽器直接打開展現,這樣非常有利于前后端的分離。

在Spring Boot中使用Thymeleaf,只需要引入下面依賴,并在默認的模板路徑src/main/resources/templates下編寫模板文件即可完成

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  4. </dependency>
在完成配置之后,舉一個簡單的例子,在快速入門工程的基礎上,舉一個簡單的示例來通過Thymeleaf渲染一個頁面。
  1. @RequestMapping("thymeleaf")
  2. public String thymeleaf(ModelMap map) {
  3. map.addAttribute("host", "http://blog.csdn.net/liaodehong");
  4. return "thymeleaf/index";
  5. }

FreeMarker


?????? FreeMarker是一款模板引擎: 即一種基于模板和要改變的數據,???并用來生成輸出文本(HTML網頁、電子郵件、配置文件、源代碼等)的通用工具。???????它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發產品的組件。

@SpringBootApplication、這里我們把FreeMarker,Velocity,Groovy都引入進來,這里教大家一個簡單辦法。對準項目的pom文件,點擊右鍵,選擇edit spring。



編寫模板文件index.ftl;

Maven依賴?編寫一個index.ftl文件,此文件的路徑在src/main/resources/templates/freeMarker下,其中index.ftl文件的內容如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8" />
  5. <title></title>
  6. </head>
  7. <body>
  8. <h1>Hello Boot ${content}</h1>
  9. </body>
  10. </html>

Controller如下

  1. @Controller
  2. public class HelloController {
  3. @RequestMapping("/")
  4. public String index() {
  5. return "index";
  6. }
  7. @RequestMapping("thymeleaf")
  8. public String thymeleaf(ModelMap map) {
  9. map.addAttribute("host", "http://blog.csdn.net/liaodehong");
  10. return "thymeleaf/index";
  11. }
  12. @RequestMapping("freeMarker")
  13. public String framework(ModelMap map) {
  14. map.addAttribute("content", "freeMarker");
  15. return "freeMarker/index";
  16. }
  17. }

Velocity

Velocity 是一種 Java 模版引擎技術,該項目由 Apache 提出,由另外一種引擎技術 Webmacro 引深而來。那什么是官方的 Velocity 定義呢? Apache 對它的定義是:一種基于 Java 的模板引擎,但允許任何人使用簡單而強大的模板語言來引用定義在 Java 代碼中的對象。目前最新的版本是 1.4 ,可以在 http://jakarta.apache.org/velocity/index.html 查找更多信息。

Springboot教程、其實這幾個模板都大同小異,Controller層基本不需要怎么變化,唯一需要變化只是模板的顯示方式而已。

Velocity的支持已經移除,導致視圖一直報錯,之前知道Spring4.3廢棄了Velocity,@deprecated as of?spring?4.3, in favor of FreeMarker,所以以為Springboot也只是deprecated ,誰曾想居然remove掉了。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.5-Release-Notes

Classes, methods and properties that were deprecated in Spring Boot 1.4 have been removed in this release. Please ensure that you aren’t calling deprecated methods before upgrading. In particular, the HornetQ and Velocity support have been removed.

資源下載頁:http://download.csdn.net/detail/liaodehong/9921032


发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息