SpringBoot學習中的坑
springboot 版本 2.1.0 thymeleaf:版本在springboot配置檔案中已經配置,不需要進行更改
第一次使用springboot 發現瀏覽器中找不到靜態檔案,不知道什麼原因,路徑也是對的。
結構如下
以下為login的部分程式碼塊
<link href="/asserts/css/bootstrap.min.css" th:href="@{/webjars/bootstrap/4.1.3/css/bootstrap.css}" rel="stylesheet"> <link href="/asserts/css/signin.css" th:href="@{/asserts/css/signin.css}" rel="stylesheet"> <form class="form-signin" action="dashboard.html" th:action="@{/user/login}" method="post"> <img class="mb-4" src="/asserts/img/bootstrap-solid.svg" th:src="@{/asserts/img/bootstrap-solid.svg}" alt="" width="72" height="72">
MyMvcConfig程式碼如下
@Configuration public class MyMvcConfig extends WebMvcConfigurationSupport { @Override public void addViewControllers(ViewControllerRegistry registry) { System.out.println("載入了"); registry.addViewController("/").setViewName("login"); } /* //第二種實現方法:新增WebMvcConfigurer元件 @Bean public WebMvcConfigurer webMvcConfigurer() { WebMvcConfigurer adapter = new WebMvcConfigurer() { @Override public void addViewControllers(ViewControllerRegistry registry) { //將login.html對映到路徑urlpath為:"/"上 registry.addViewController("/").setViewName("login"); registry.addViewController("/login.html").setViewName("login"); } }; return adapter; }*/ }
訪問後發現css和圖片全部沒有載入到,開啟控制檯發現全部是404
後來發現使用WebMvcConfigurer 就能解決這個問題,程式碼如下:
@Configuration public class MyMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { System.out.println("載入了"); registry.addViewController("/").setViewName("login"); } //第二種實現方法:新增WebMvcConfigurer元件 @Bean public WebMvcConfigurer webMvcConfigurer() { WebMvcConfigurer adapter = new WebMvcConfigurer() { @Override public void addViewControllers(ViewControllerRegistry registry) { //將login.html對映到路徑urlpath為:"/"上 registry.addViewController("/").setViewName("login"); registry.addViewController("/login.html").setViewName("login"); } }; return adapter; } }
於是樓主找了下原因,盡然發現了WebMvcConfigurationSupport會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置~~_~~
一下是這幾種的區別: implements WebMvcConfigurer : 不會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置 @EnableWebMvc + implements WebMvcConfigurer : 會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置 extends WebMvcConfigurationSupport :會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置 extends DelegatingWebMvcConfiguration :會覆蓋@EnableAutoConfiguration關於WebMvcAutoConfiguration的配置
如果用WebMvcConfigurationSupport,網上說要重寫addResourceHandlers方法,但是試了下沒用,具體可實現的解決方案,博主還沒有想到。等懂了在補充。
更改後,問題解決。