2017-07-02 90 views
0

我檢查過的同樣問題的解決方案都不適用於我。我使用的IntelliJ IDEA春天初始化程序,其中有一個明確的項目結構:SpringBoot無法解析靜態資源的路徑(404)

源:
---主營:
----------的java:
----- ----------- myproject:
------------------------------ config
- ----------------------------控制器
------------------- ----------- dao
------------------------------ model
--- ---------------------------服務
------------------------------ HibernateApplication.java
--------- resources:
---------------靜:
---------------模板

這裏HibernateApplication是主澆道類,一個由SpringBoot提供的標準@SpringBootApplication; 資源位於主要目錄下,並且,據我從其他的例子看,它作爲一個WEB-INF文件夾中。
配置,有一個@Configuration類:

@Configuration 
    public class AppConfig { 
    @Bean 
    public InternalResourceViewResolver viewResolver(){ 
     InternalResourceViewResolver resolver = new 
     InternalResourceViewResolver(); 
     resolver.setPrefix("/resources/"); 
     resolver.setSuffix(".jsp"); 
     resolver.setViewClass(JstlView.class); 
     return resolver; 
    } 
} 

這裏是我的@Controller類:

@Controller 
@RequestMapping("/") 
public class ActorController { 
    @Autowired 
    private ActorService actorService; 

    @GetMapping 
    public String addActor(){ 
     //actorService.addActor(); 
     return "hello"; 
    } 
} 

我使用的不是我在這裏的服務,所有的我想要做只是爲了讓他滾,並用「的hello.jsp」文件,該文件是在撒謊正是在資源/文件夾的靜態響應。其內容是死的簡單:

<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Hello</title> 
</head> 
<body> 
Hello from Spring Boot! 
</body> 
</html> 

以下是我application.properties

spring.datasource.url =的jdbc:mysql的://本地主機:3306/sakila的
spring.datasource .username =根
spring.datasource.password =根
spring.jpa.hibernate.ddl-自動=創建降
security.basic.enabled =假

我的依賴性包括Tomcat的embded-碧玉JSTL的javax.servlet和所有必要的春天啓動的東西。然而,當我運行本地主機:8080 /我發現了一個白色標籤錯誤頁面意外404錯誤。如果我的路徑配置一樣
.setPrefix( 「/資源/」)。setSuffix( 「JSP」),它說,它無法解析 「/resources/hello.jsp」。如果我將前綴設置爲(「/ resources/static /」),則無法找到「/resources/static/hello.jsp」。

怎麼回事?即使我在該路徑上單擊Ctrl,Intellij也很容易解決此問題,並將其重定向到「資源」文件夾。

P.S.好的,我發現了一個問題:默認情況下,Intellij已經創建了這個「myproject」文件夾,並且裏面有runner類,我錯誤地開始在這個文件夾中添加新的包。現在我已經解決了這個問題,將所有包從這個文件夾移到'main'文件夾,只留下裏面的runner類的「myproject」文件夾。現在層次結構必須正常,但瀏覽器中仍然沒有返回視圖。

+0

在路徑中嘗試刪除/資源並檢查爲彈簧啓動默認資源文件夾 – Automator1992

回答

0

發現了問題。
1.缺少Thymeleaf依賴項。
2.控制器,DAO和東西都應該作爲SpringBootApplication主類的主文件夾內的子文件夾。我的問題是我的控制器甚至沒有在組件掃描路徑上。
3.視圖應該放置在'模板'文件夾內,而不是像我的情況(錯誤地)在'靜態'內。意見也(在我的情況)必須是HTML,而不是jsp。
4.最後我刪除了代碼中的ViewResolver定義,因爲默認情況下我的html文件現在被SpringBoot檢測到了。

謝謝,現在可以關閉此問題。