1. 程式人生 > >SpringBoot訪問不了resources/templates下的頁面

SpringBoot訪問不了resources/templates下的頁面

最近在使用springboot開發一個專案,然後發現一直訪問不了resources/templates下的頁面,命名控制器程式碼也沒有寫錯。然後自己加了@EnableWebMvc註解以及自己配置了檢視解析器,到最後還是不能解決問題(可以發現配置了@EnableWebMvc後可以在控制檯打印出頁面的路徑)。最後發現原來SpringBoot只支援模板引擎的原因。所以我認為可能是要加上一個模板引擎在依賴中負責渲染(springboot預設不支援jsp),這裡我就選擇使用thymeleaf,加上spring-boot-starter-thymeleaf在依賴中就解決了。

spring boot在springmvc的檢視解析器方面就預設集成了ContentNegotiatingViewResolver和BeanNameViewResolver,在檢視引擎上就已經整合自動配置的模版引擎,如下: 
1. FreeMarker 
2. Groovy 
3. Thymeleaf 
4. Velocity (deprecated in 1.4) 
6. Mustache

JSP技術spring boot 官方是不推薦的,原因有三: 
1. 在tomcat上,jsp不能在巢狀的tomcat容器解析即不能在打包成可執行的jar的情況下解析 
2. Jetty 巢狀的容器不支援jsp 
3. Undertow

而其他的模版引擎spring boot 都支援,並預設會到classpath的templates裡面查詢模版引擎。

當然還有第二種可能性,那就是你的@SpringBootApplication註解所在類的掃描不到控制器的位置(可以用MockMvc查出這個原因),要保證所有包的位置都保持在與@SpringBootApplication註解所在類的包同級或者下級,@SpringBootApplication自帶的@ComponentScan只會掃描@SpringBootApplication註解所在類的包同級或者下級