springboot 404的解決方法

原文鏈接
1,如果你本身想訪問的是一個靜態資源
先確定項目的輸出路徑下是否存在該資源,maven項目的輸出路徑一般在target/classess,在idea中如下圖所示:


若不存在,需要在maven中添加配置,將該資源文件在編譯時輸出到classpath下,一般可添加如下代碼在pom.xml中:

<build>
	<resources>
		<resource>
			<directory>src/main/java</directory>
		</resource>
		<resource>
			<directory>src/main/resources</directory>
		</resource>
	</resources>
</build>

若資源存在,那就是:1,靜態資源映射配置錯誤;2,你的項目本身沒有靜態資源相關的配置,使用的是springboot默認的配置,但你的資源沒有放在默認的文件夾下,默認的文件夾有:

"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/", "/"

那麼如何自定義靜態文件映射呢:可以在application.yml中加入以下配置

#靜態資源存放路徑
spring:
	#配置classpath 下 static和mystatic兩個文件夾爲靜態資源文件夾
    resources:
        static-locations: classpath:/mystatic,classpath:/static
  	#靜態資源url映射路徑
    mvc:
        static-path-pattern: /static/**
# 自定義配置會覆蓋默認配置,注意key、value之間一定要有空格
# 在上面的配置中如果訪問localhost/static/a.jpg,則會依次在mystatic和static兩個文件下查找a.jpg,找到直接返回。如果是 localhost/static/a/b.jpg則會相應的去查找對應的文件夾

在上面的配置修改好後,一定要檢查:1,key value之間是否有空格,否則配置不生;2,相應的重啓服務器,緩存也會影響訪問結果;3,路徑是否是以配置的static作爲靜態資源的訪問父路徑

2,如果你想在訪問某鏈接後跳轉到某個頁面,而不是靜態資源
確定該鏈接能否進入到控制器的方法中,若不能,請檢查自己controller和方法上的映射路徑是否正確。最好是在相關代碼內打斷點或者加輸出語句,看是否進入到此方法。若是正確的進入到此方法,並且沒有進行重定向或轉發操作的話,服務器是不可能報404的,只可能報500,如果有重定向或轉發操作,請檢查路徑是否正確

3, 如果你使用了thymeleaf模板,一定要保證引入了相關依賴並保證配置正確
pom.xml中加入

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

application.yml中加入

spring:
  thymeleaf:
    cache: false
	#默認情況下是templates,這裏改成了view文件夾
    prefix: classpath:/view/
    suffix: .html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章