首頁 > 軟體

如何在SpringBoot+Freemarker中獲取專案根目錄

2021-10-23 22:00:26

在Freemarker中獲取專案根目錄

好多人 都說:

在組態檔中加入

spring.freemarker.request-context-attribute=request

在頁面就可以

<#assign ctx=request.contextPath />

但是發現前臺依然為 null(可能是我的設定有問題)

後來發現可以這樣使用

<#assign ctx=springMacroRequestContext.contextPath />

不需要多餘的設定

在Freemark模板引擎路徑的幾種設定方法

在SpringMVC中我們想返回檢視是怎麼做的

(1)SpringMVC中當我們想解析jsp檢視的時候需要在spring.xml中有如下的設定

在SpringBoot中springboot不推薦我們使用jsp模板

向我們提供了freemark模板模板引擎來解析檢視

1.在SpringBoot中如果我們沒進行任何設定那麼我們只需要在resources目錄下建立一個templates資料夾舉個例子。

(1).建立一個Controller類返回名稱為first的檢視

(2).在resource目錄下建立一個名為first.ftl的檔案(SpringBoot預設解析檔案型別為ftl的檔案)

(3)first.ftl中的內容

(4)請求結果

從上面的結果可以看出freemark為我們完成了檢視解析

那麼如果我們如何自定義freemark的模板引擎路徑呢

有兩種方式

第一種方式:

1.在resource目錄下建立一個application.properties檔案,SpringBoot在啟動載入時會找到resource目錄下的

application.properties檔案,程式碼如下

(1)這裡劃紅線的倆個點是需要注意的,對於suffix我們應該非常熟悉因為在之前設定jsp檢視解析器的時候就用到過,是檢視解析的檔案型別(springboot中預設的解析檔案型別是ftl,而我們將檔案型別更改為fid格式)

(2)template-loader-parh也不難理解就是設定解析檢視的路徑

(3)目錄結構

2.application.properties設定完成後我們看一下效果

以上就是如何通過application.properties設定修改freemark返回路徑

第二種方式:

1.建立Java類繼承WebMvcConfigurerAdapter

程式碼如下

目錄結構

執行結果

以上就是通過倆種方式設定freemark返回路徑

ps:在反覆測試freemark返回路徑的過程中發現了很有意思的幾點感興趣的可以深入研究一下

(1)springboot如果沒設定application.properties檔案或者沒建立工作類的時候我們都知道預設返回ftl格式檔案,但是如果我們通過工具類改變freemark路徑我們會發現,雖然我們設定了返回fap型別的檔案,但是當我們把fap改成ftl檔案之後,freemark仍然可以解析

(2)通過application.properties檔案改變freemark返回路徑的話,只能解析application.properties設定的檔案型別,ftl是無效的

(3)如果同時載入application.properties檔案和工具類的話,工具類的權重比較高,freemark會返回工具類中的設定,但是在第一點我說過如果光使用工具類的話freemark是可以返回ftl格式檔案的,但是如果application.properties檔案和工具類都進行啟動的話ftl就無效了

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com