欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

引言

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

相關(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>

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

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

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

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

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

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

哪里都可以。

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

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

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

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

踩坑之路

一開始沒引入成功時,項目啟動是完全正常的,控制臺也沒有報錯,只有瀏覽器一直在 404 。

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

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

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

雖然看起來也沒什么用。

我一開始的 controller 相當(dāng)簡單,通過 /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ī)一動,才終于發(fā)現(xiàn)是我的thymeleaf從頭到尾沒引入成功(pom里面的引入配置無法用 ctrl +鼠標(biāo)左鍵跳轉(zhuǎn)進(jìn)入,而我之前看它沒紅就沒管了……)

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

踩坑支線

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

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

它就是:File->Project Settings->Modules->各個項目->Dependencies->Module SDK

打掃干凈后,再啟動就正常了。

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

相關(guān)文章

  • 使用IDEA直接連接MySQL數(shù)據(jù)庫的方法

    使用IDEA直接連接MySQL數(shù)據(jù)庫的方法

    這篇文章主要介紹了如何使用IDEA直接連接MySQL數(shù)據(jù)庫,首先需要新建一個空項目,第一次連接 需要先下載驅(qū)動,文中給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Java集合框架迭代器Iterator實現(xiàn)原理解析

    Java集合框架迭代器Iterator實現(xiàn)原理解析

    這篇文章主要介紹了Java集合框架迭代器Iterator實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • 深入分析RabbitMQ中死信隊列與死信交換機(jī)

    深入分析RabbitMQ中死信隊列與死信交換機(jī)

    這篇文章主要介紹了RabbitMQ中死信隊列與死信交換機(jī),死信隊列就是一個普通的交換機(jī),有些隊列的消息成為死信后,一般情況下會被RabbitMQ清理,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • SpringBoot學(xué)習(xí)之Json數(shù)據(jù)交互的方法

    SpringBoot學(xué)習(xí)之Json數(shù)據(jù)交互的方法

    這篇文章主要介紹了SpringBoot學(xué)習(xí)之Json數(shù)據(jù)交互的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 使用redisTemplate從redis獲取所有數(shù)據(jù)

    使用redisTemplate從redis獲取所有數(shù)據(jù)

    這篇文章主要介紹了使用redisTemplate從redis獲取所有數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 使用spring容器在初始化Bean時前和后的操作

    使用spring容器在初始化Bean時前和后的操作

    這篇文章主要介紹了使用spring容器在初始化Bean時前和后的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot項目導(dǎo)入外部jar包的詳細(xì)指南

    SpringBoot項目導(dǎo)入外部jar包的詳細(xì)指南

    在開發(fā)SpringBoot項目時,我們經(jīng)常需要引入一些外部的jar包來增強(qiáng)項目的功能,這些jar包可能不是Maven中央倉庫中的,或者我們想要使用特定版本的jar包,本文將詳細(xì)介紹如何在SpringBoot項目中導(dǎo)入外部jar包,需要的朋友可以參考下
    2024-10-10
  • 手寫redis@Cacheable注解?支持過期時間設(shè)置方式

    手寫redis@Cacheable注解?支持過期時間設(shè)置方式

    這篇文章主要介紹了手寫redis@Cacheable注解?支持過期時間設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Lucene單值編碼壓縮算法源碼解析

    Lucene單值編碼壓縮算法源碼解析

    這篇文章主要為大家介紹了Lucene單值編碼壓縮算法源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java如何實現(xiàn)壓縮文件與解壓縮zip文件

    Java如何實現(xiàn)壓縮文件與解壓縮zip文件

    這篇文章主要介紹了Java如何實現(xiàn)壓縮文件與解壓縮zip文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評論