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

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 找了可用版本,才確認了這個 2.7.18.RELEASE 可用。

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

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

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

哪里都可以。

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

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

這里如果不修改的話,它默認對應(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 相當簡單,通過 /user 進入 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路徑下的文件,于是靈機一動,才終于發(fā)現(xiàn)是我的thymeleaf從頭到尾沒引入成功(pom里面的引入配置無法用 ctrl +鼠標左鍵跳轉(zhuǎn)進入,而我之前看它沒紅就沒管了……)

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

踩坑支線

通常在配置修改無效的時候,第一個懷疑的是瀏覽器或 IDEA 的緩存,瀏覽器用 ctrl + F5,有時候得進配置里搜索 “緩存” 后手動清除(我的 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)文章

最新評論

常德市| 安阳县| 普陀区| 潢川县| 勐海县| 杭州市| 榆中县| 奉化市| 基隆市| 玉门市| 夏邑县| 高陵县| 策勒县| 临漳县| 湄潭县| 旬阳县| 彩票| 清河县| 盱眙县| 富民县| 大关县| 华坪县| 双峰县| 怀集县| 利川市| 中卫市| 个旧市| 南平市| 南投县| 万荣县| 青川县| 桦川县| 新竹市| 浦北县| 凌海市| 澄江县| 沁源县| 平舆县| 饶阳县| 兰考县| 朝阳市|