在與前端交互的過(guò)程中,也會(huì)碰到一個(gè)跨域的問(wèn)題。我們也可通過(guò)WebMvcConfigurer接口來(lái)解決跨域的問(wèn)題。
springboot默認(rèn)靜態(tài)文件目錄
Spring Boot 默認(rèn)為我們提供了靜態(tài)資源處理,我建議大家直接使用Spring Boot的默認(rèn)配置即可。默認(rèn)提供的靜態(tài)資源映射如下:
- classpath:/META-INF/resources
- classpath:/resources
- classpath:/static
- classpath:/public
這些目錄的靜態(tài)資源時(shí)可以直接訪(fǎng)問(wèn)到的。上面這幾個(gè)都是靜態(tài)資源的映射路徑,優(yōu)先級(jí)順序?yàn)椋篗ETA-INF/resources > resources > static > public
使用第一講中spring initilize工具創(chuàng)建的springboot工程,默認(rèn)也給我們創(chuàng)建了classpath:/static這個(gè)目錄
我們往這個(gè)目錄放一個(gè)圖片,
通過(guò)瀏覽器訪(fǎng)問(wèn)http://localhost:8080/
自定義配置靜態(tài)資源配置
以上這些都是springboot默認(rèn)給我們提供的,那么我們有沒(méi)有能力自己自定義一個(gè)靜態(tài)資源映射呢?完全可以。使用WebMvcConfigurer這個(gè)類(lèi)即可實(shí)現(xiàn)自定義靜態(tài)資源配置。
我們新建一個(gè)WebConfig類(lèi)實(shí)現(xiàn)WebMvcConfigurer接口 ,如下:
@Configuration public class WebConfig implements WebMvcConfigurer { }現(xiàn)在我們什么都不配置,然后重啟應(yīng)用,訪(fǎng)問(wèn)http://localhost:8080/。卻發(fā)現(xiàn)程序報(bào)404了:
這是因?yàn)槲覀兣渲昧薟ebMvcConfigurer,這就替換了springboot原先的默認(rèn)配置。這里我們想要自定義一個(gè)靜態(tài)資源配置,比如,我們/file/**這樣的請(qǐng)求,定向到我的D盤(pán)根目錄下。我們重寫(xiě)WebMvcConfigurer接口的addResourceHandlers方法。如下:
@Override public void addResourceHandlers(ResourceHandlerregistry registry) { regi("/file/**") .addResourceLocations("file:D:\"); }然后把圖片放到D盤(pán)下:
這里需要注意的是,配置外部的資源要使用file聲明,配置jar包內(nèi)部的使用classpath聲明。
WebMvcConfigurer接口解決跨域問(wèn)題
可以通過(guò)重寫(xiě)WebMvcConfigurer的addCorsMappings方法,可以配置跨域的問(wèn)題。如下:
/** * 跨域支持 */ @Override public void addCorsMappings(CorsRegistry registry) { regi("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH") .maxAge(3600 * 24); }總結(jié)
WebMvcConfigurer接口不單只是能夠配置靜態(tài)資源訪(fǎng)問(wèn)和解決跨域問(wèn)題,它還可以配置很多Web請(qǐng)求相關(guān)的東西,比如攔截器,數(shù)據(jù)轉(zhuǎn)化(MessageConverters)等,礙于篇幅,這里就先不討論了。可以配置的東西,可以通過(guò)接口的方法查看,如下:
SpringBoot 默認(rèn)幫我們做了很多事情,這大大方便了我們的開(kāi)發(fā)。 但是,有時(shí)候我們想要自己定義一些Handler,Interceptor,ViewResolver,MessageConverter,在Spring Boot 2.0之前版本都是靠重寫(xiě)WebMvcConfigurerAdapter的方法來(lái)添加自定義攔截器,消息轉(zhuǎn)換器等。SpringBoot 2.0 后,該類(lèi)被標(biāo)記為@Deprecated?,F(xiàn)在,我們只能靠實(shí)現(xiàn)WebMvcConfigurer接口來(lái)實(shí)現(xiàn)了。
1.《【快學(xué)springboot】6.WebMvcConfigurer配置靜態(tài)資源和解決跨域》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《【快學(xué)springboot】6.WebMvcConfigurer配置靜態(tài)資源和解決跨域》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/gl/2170620.html