最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成thymeleaf瀏覽器404的解決方案

 更新時(shí)間:2024年12月12日 10:32:49   作者:十連滿潛  
前后端不分離的古早 SpringMVC 項(xiàng)目通常會(huì)使用 thymeleaf 模板引擎來完成 html 頁(yè)面與后端接口之間的交互,如果要將項(xiàng)目架構(gòu)升級(jí)成 SpringBoot , thymeleaf 也可以照常集成,但有時(shí)候會(huì)踩到一些坑,所以本文給大家介紹了SpringBoot集成thymeleaf瀏覽器404的解決方案

引言

前后端不分離的古早 SpringMVC 項(xiàng)目通常會(huì)使用 thymeleaf 模板引擎來完成 html 頁(yè)面與后端接口之間的交互。如果要將項(xiàng)目架構(gòu)升級(jí)成 SpringBoot , thymeleaf 也可以照常集成。但有時(shí)候會(huì)踩到一些坑,特別是如今有了一些 AI 工具,而工具偶爾會(huì)抽風(fēng)時(shí)……

相關(guān)依賴

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.7.18</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
        <version>2.1.8.RELEASE</version>
    </dependency>
</dependencies>

如果整體項(xiàng)目架構(gòu)采用的是 SpringCloud ,那么版本號(hào)完全可以寫在父項(xiàng)目的 pom,或具體的版本管理子項(xiàng)目中,其他的子服務(wù)在引入依賴時(shí)便無需額外再寫一行 version。

按網(wǎng)上大多數(shù)的教程,引入依賴時(shí)均沒有指定版本,我一開始也沒指定,項(xiàng)目也沒報(bào)錯(cuò),但是啟動(dòng)后又一直無法訪問到預(yù)計(jì)的 html 文件。兜兜轉(zhuǎn)轉(zhuǎn)發(fā)現(xiàn) thymeleaf 居然沒引入成功……

這還有個(gè)小插曲,我問通義靈碼 SpringBoot 2.7.18 對(duì)應(yīng)的 thymeleaf 集成的版本是多少?它給我報(bào)了 3.1.8,喜聞樂見找不到,后來在阿里云云效 maven 找了可用版本,才確認(rèn)了這個(gè) 2.7.18.RELEASE 可用。

怎么判斷thymeleaf是否成功集成了? 找到thymeleafProperties.class,在里面的 setPrefix 方法打個(gè)斷點(diǎn),看看能不能進(jìn)去,能進(jìn)去就說明正常了。

文件結(jié)構(gòu)

一個(gè)最簡(jiǎn)單的 SpringBoot 項(xiàng)目,要求啟動(dòng)后訪問目標(biāo)端口時(shí)能訪問到自定義首頁(yè),先不管首頁(yè)內(nèi)容是什么、長(zhǎng)什么樣,新建一個(gè) html 總是沒錯(cuò)的。但新建在哪里呢?

哪里都可以。

考慮到 SpringBoot 項(xiàng)目打包后都是一個(gè)完整的 jar 包,這意味著如果不做干預(yù)的話,前端文件到時(shí)候也會(huì)被打包在 jar 中,修改起來就相當(dāng)麻煩。好在它可以被配置,因此可以做到相當(dāng)程度的 “偽” 前后端分離。

配置寫在 resources 下 application.yaml 文件的 spring.thymeleaf.prefix 里。

這里如果不修改的話,它默認(rèn)對(duì)應(yīng)的是 classpath:/templates/

spring:
  thymeleaf:
    prefix: file:xxxx/my-cloud2/ui/templates/
    suffix: .html
    cache: false
    mode: HTML
    encoding: UTF-8

踩坑之路

一開始沒引入成功時(shí),項(xiàng)目啟動(dòng)是完全正常的,控制臺(tái)也沒有報(bào)錯(cuò),只有瀏覽器一直在 404 。

不得已,多配置了幾行日志處理的參數(shù)。

logging:
  level:
    org:
      springframework:
        web:
          servlet:
            DispatcherServlet: DEBUG
        thymeleaf: DEBUG

才在控制臺(tái)看到 404 真正對(duì)應(yīng)的內(nèi)容。

雖然看起來也沒什么用。

我一開始的 controller 相當(dāng)簡(jiǎn)單,通過 /user 進(jìn)入 index 視圖:

@RequestMapping("user")
@Controller
public class UserController {

    @GetMapping("/")
    public String init(){
        return "index";
    }
}

404 后我又把 return 的字符串改成/index index.html /templates/index,但全部無效,心灰意冷地把 /templates/index 發(fā)給 AI,它說這種寫法通常是WEB-INF路徑下的文件,于是靈機(jī)一動(dòng),才終于發(fā)現(xiàn)是我的thymeleaf從頭到尾沒引入成功(pom里面的引入配置無法用 ctrl +鼠標(biāo)左鍵跳轉(zhuǎn)進(jìn)入,而我之前看它沒紅就沒管了……)

但實(shí)際上,即使我在 resources 文件夾下新建一個(gè) WEB-INF 再把我的 index.html 拷貝進(jìn)去,它也還是 404 。這個(gè)沒太搞明白,鑒于也不是我的目標(biāo),就沒管了,大概率配置上的問題兩相干擾,結(jié)果誰都指望不上。加了 spring-boot-starter-thymeleaf 的版本號(hào)后才正常些。

踩坑支線

通常在配置修改無效的時(shí)候,第一個(gè)懷疑的是瀏覽器或 IDEA 的緩存,瀏覽器用 ctrl + F5,有時(shí)候得進(jìn)配置里搜索 “緩存” 后手動(dòng)清除(我的 Chrome 有時(shí)候得這樣),IDEA的緩存就 File->Invalidate Caches / Restart ,再不行就 mvn clean 。

其實(shí)還有個(gè)地方,即便原先配置沒錯(cuò),只是重新選擇一下,有時(shí)候都挺能解決問題的(原理可能也是緩存?)

它就是:File->Project Settings->Modules->各個(gè)項(xiàng)目->Dependencies->Module SDK

打掃干凈后,再啟動(dòng)就正常了。

到此這篇關(guān)于SpringBoot集成thymeleaf瀏覽器404的解決方案的文章就介紹到這了,更多相關(guān)SpringBoot集成thymeleaf 404內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

仙居县| 吉安县| 房山区| 江阴市| 甘谷县| 西乌| 吉林省| 宁海县| 安丘市| 邳州市| 皋兰县| 铜川市| 河源市| 任丘市| 咸阳市| 泽普县| 盘锦市| 祁门县| 正阳县| 达日县| 南陵县| 临武县| 新田县| 吴川市| 云梦县| 石渠县| 平定县| 清徐县| 天峻县| 海口市| 小金县| 徐水县| 泊头市| 昌都县| 昂仁县| 搜索| 河北区| 西林县| 雅江县| 义乌市| 房山区|