當前位置:首頁 » 文件傳輸 » thymeleaf直接訪問頁面
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

thymeleaf直接訪問頁面

發布時間: 2023-03-14 09:35:58

❶ SpringBoot頁面展示Thymeleaf

開發傳統Java WEB工程時,我們可以使用JSP頁面模板語言,但是在SpringBoot中已經不推薦使用了。SpringBoot支持如下頁面模板語言

上面並沒有列舉所有SpringBoot支持的頁面模板技術。其中Thymeleaf是SpringBoot官方所推薦使用的,下面來談談Thymeleaf一些常用的語法規則。

要想使用Thhymeleaf,首先要在pom.xml文件中單獨添加Thymeleaf依賴。

Spring Boot默認存放模板頁面的路徑在 src/main/resources/templates 或者 src/main/view/templates ,這個無論是使用什麼模板語言都一樣,當然默認路徑是可以自定義的,不過一般不推薦這樣做。另外Thymeleaf默認的頁面文件後綴是 .html 。

在MVC的開發過程中,我們經常需要通過 Controller 將數據傳遞到頁面中,讓頁面進行動態展示。

創建一個Controller對象,在其中進行參數的傳遞

在SpringBoot默認的頁面路徑下創建show.html文件,內容如下

可以看到在 p 標簽中有 th:text 屬性,這個就是thymeleaf的語法,它表示顯示一個普通的文本信息。

如果我們要顯示的信息是存在資源文件中的,同樣可以在頁面中顯示,例如資源文件中定義了內容 welcome.msg=歡迎{0}光臨! 。可以在頁面中將其顯示

另外,在 th:utext 中還能做一些基礎的數學運算

如果我們想要傳遞到的頁面的信息,它本身是帶有CSS樣式的,這個時候如何在頁面中將攜帶的樣式信息也顯示出來?此時我們的控制器方法這樣寫。

此時頁面中需要藉助 th:utext 屬性進行顯示

通過瀏覽器查看頁面源碼可以看出 th:utext 和 th:text 的區別是: th:text 會對 < 和 > 進行轉義,而 th:utext 不會轉義。

我們常常需要將一個bean信息展示在前端頁面當中。

上面給出了兩種展現方式,一種是通過${屬性},另外一種是通過 {屬性}。
關於「${屬性}」和「
{屬性}」的區別?
$訪問完整信息,而訪問指定對象中的屬性內容, 如果訪問的只是普通的內容兩者沒有區別;

在 thymeleaf 之中提供有相應的集合的處理方法,例如:在使用 List 集合的時候可以考慮採用 get()方法獲取指定索引的數據,那麼在使用 Set 集合的時候會考慮使用 contains()來判斷某個數據是否存在,使用 Map 集合的時候也希望可以使用 containsKey()判斷某個 key 是否存在,以及使用get()根據 key 獲取對應的 value,而這些功能在之前並不具備,下面來觀察如何在頁面中使用此類操作

在傳統WEB工程開發時,路徑的處理操作是有點麻煩的。SpringBoot中為我們簡化了路徑的處理。

頁面之間的跳轉也能通過@{}來實現

雖然在這種模版開發框架裡面是不提倡使用內置對象的,但是很多情況下依然需要使用內置對象進行處理,所以下面來看下如何在頁面中使用JSP內置對象。

thymeleaf 考慮到了實際的開發情況,因為 request 傳遞屬性是最為常用的,但是 session 也有可能使用,例如:用戶登錄之後需要顯示用戶 id,那麼就一定要使用到 session,所以現在必須增加屬性范圍的形式後才能夠正常使用。在 thymeleaf 裡面也支持有 JSP 內置對象的獲取操作,不過一般很少這樣使用。

所有的頁面模版都存在各種基礎邏輯處理,例如:判斷、循環處理操作。在 Thymeleaf 之中對於邏輯可以使用如下的一些運算符來完成,例如:and、or、關系比較(>、<、>=、<=、==、!=、lt、gt、le、ge、eq、ne)。

通過控制器傳遞一些屬性內容到頁面之中:

不滿足條件的判斷

通過swith進行分支判斷

在實際開發過程中常常需要對數據進行遍歷展示,一般會將數據封裝成list或map傳遞到頁面進行遍歷操作。

我們常常需要在一個頁面當中引入另一個頁面,例如,公用的導航欄以及頁腳頁面。thymeleaf中提供了兩種方式進行頁面引入。

可以看到頁面當中還存在一個變數projectName,這個變數的值可以在引入頁面中通過 th:with="projectName=網路" 傳過來。

❷ 「SpringBoot實戰」視圖技術-Thymeleaf

在一個Web應用中,通常會採用MVC設計模式實現對應的模型、視圖和控制器,其中,視圖是用戶看到並與之交互的界面。對最初的Web應用來說,視圖是由HTML元素組成的靜態界面;而後期的Web應用更傾向於使用動態模板技術,從而實現前後端分離和頁面的動態數據展示。Spring Boot框架為簡化項目的整體開發,提供了一些視圖技術支持,並主要推薦整合模板引擎技術實現前端頁面的動態化內容。本文對SpringBoot常用的Thymeleaf進行整合。

Thymeleaf是一種現代的基於伺服器端的Java模板引擎技術,也是一個優秀的面向Java的XML、XHTML、HTML5頁面模板,它具有豐富的標簽語言、函數和表達式,在使用Spring Boot框架進行頁面設計時,一般會選擇 Thymeleaf模板。我們在這里學習Thymeleaf 常用的標簽、表達式。

Thymeleaf標簽

使用標簽只需要加上一個命名空間就可以了。 即修改原html的第二行就可以了。

變數表達式${..}主要用於獲取上下文中的變數值,示例代碼如下。

這是標題

- 使用了Thymeleaf模板的變數表達式${..}用來動態獲取p標簽中的內容 - 如果當前程序沒有啟動或者當前上下文中不存在title變數,該片段會顯示標簽默認值「這是標題」; - 如果當前上下文中存在title 變數並且程序已經啟動,當前p標簽中的默認文本內容將會被tite變數的值所替換,從而達到模板引擎頁面數據動態替換的效果。

Thymeleaf為變數所在域提供了一些內置對象

結合上述內置對象的說明,假設要在Thymeleaf模板擎頁面中動態獲取當前國家信息,可以使用#locale內置對象

選擇交量表達式和變數表達式用法類似,一般用於從被選定對象而不是上下文中獲取屬性值,如果沒有選定對象,則和變數表達式一樣,示例代碼如下。

消息表達式#{..}主要用於Thymeleaf模板頁面國際化內容的動態替換和展示。使用消息表這式#{..}進行國際化設置時,還需要提供一些國際化配置文件。關於消息表達式的使用,下文寫國際化時會詳細說明。

鏈接表達式@{..}一般用於頁面跳轉或者資源的引入,在Web開發中占據著非常重要的地位,並且使用也非常頻繁。

片段表達式~{..}是一種用來將標記片段移動到模板中的方法。其中,最常見的用法是使用th:insert或th:replace 屬性插入片段

Spring Boot默認設置了靜態資源的訪問路徑,默認將/**所有訪問映射到以下目錄。

我們創建一個springboot項目用於本次實驗。項目名為springboot_01_thyme。java8,springboot2.6.6

創建一個LoginController類用於數據替換效果測試。

我們寫一個login.html進行測試。我們導入一個bootstrap的樣式到static/login裡面,並且自己定義一些css。

最後我們通過訪問http://localhost:8080/toLoginPage 可以查看效果

在resources目錄下創建名為i18n的文件夾,數一數這個單詞多少個字母internationalization,就知道為什麼叫i18n了。
然後我們在i18n文件夾下面創建login.properties、 login_zh_CN.properties、 login_en_US.properties文件。
目錄結構:這個Resource Bundle 'login'時idea自動創建的,我們不需要管,只需要完成我們的就行。

login.properties

login_zh_CN.properties

login_en_US.properties

然後我們在配置文件application.properties裡面添加代碼

我們在config包下面創建一個MyLocalResovel類,自定義國際化功能區域信息解析器。

這里我們基本就完成了,但是在訪問中文的時候會出現亂碼現象。

我們打開idea的file->settings->file Encodings.
將Default encoding for properties的編碼改為utf-8,同時勾選Transparentnative-to-ascii conversion

然後我們重新編寫login.properties和其他相關的

但是這種方法1隻對當前項目有效。下次創建還是使用GBK編碼

本文我們主要了解了Thymeleaf的基本語法、標簽、表達式、基本使用、同時還實現了頁面登錄頁得國際化。

本文作者:hjk-airl

本文鏈接:https://www.cnblogs.com/hjk-airl/p/16181598.html