樓主前兩天自學spring boot,然后在學習的過程中,出現一個疑問,就是如何去訪問靜態的html網頁,這個問題,樓主上網上搜了下,找到的是在resource目錄下建立一個templates文件夾,然后html網頁放在其文件夾下:
然后樓主照做,發現還是訪問不了,然后發現是需要寫一個controller訪問然后跳轉,那就又寫了一個controller,截圖如下:
做完后,發現還是不行,這時候發現需要在pom中添加這個依賴
然后還是不行,這時候樓主就納悶了,沒問題啊,后來經過一段時間對比,發現,樓主的注解寫錯了,不應該寫@RestController,應該寫@Controller,然后樓主就新建了一個Controller,截圖如下:
這樣配置后,進行測試,結果發現是可以的:
那么問題來了,為什么換了controller注解就好了呢?
我們來對比下restController和controller的區別:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相當於@ResponseBody + @Controller合在一起的作用。
1)如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp頁面,配置的視圖解析器InternalResourceViewResolver不起作用,返回的內容就是Return 里的內容。
例如:本來應該到success.html頁面的,則其顯示success.
2)如果需要返回到指定頁面,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行。
3)如果需要返回json或者xml或者自定義mediaType內容到頁面,則需要在對應的方法上加上@ResponseBody注解