javascript
在基于Spring MVC的应用程序中配置favicon.ico
Favicon是與您的網(wǎng)站相關(guān)的圖標(biāo)(favicon.ico)。 并非每個網(wǎng)站都在使用favicon。 但是大多數(shù)瀏覽器并不關(guān)心它,反正他們都要求它。 當(dāng)圖標(biāo)圖標(biāo)不在適當(dāng)位置時,服務(wù)器將返回不必要的404 Not Found錯誤。
在典型的Spring MVC應(yīng)用程序中,我們首先需要配置安全過濾器,該過濾器允許所有對favicon.ico的請求,因為Spring Security會緩存用戶的請求,包括favicon.ico請求。 成功通過身份驗證后,Spring Security會將我們重定向到顯示錯誤的資源。 為了避免這種情況,我們通過以下方式配置安全過濾器:
該配置可確保當(dāng)請求favicon.ico時,不需要身份驗證。 此技巧使我們無法在登錄應(yīng)用程序后看到“ 404 Not Found ”。
通常,我們要做的就是使404 Not Found在Spring MVC / Spring Security應(yīng)用程序中“消失”。 但是實際上,客戶端仍將尋找該資源,服務(wù)器將返回404 Not Found錯誤。
如果我們不想在我們的網(wǎng)站上使用favicon,可以采用以下幾種方法使服務(wù)器在請求后不返回錯誤。
可能最簡單的方法是在靜態(tài)資源中添加一個“空白” favicon.ico,并讓服務(wù)器根據(jù)請求提供此文件。 在以下配置中,Spring處理來自/resources/目錄的靜態(tài)資源,該目錄映射到/resources/**路徑:
@Configuration public class WebMvcConfig extends WebMvcConfigurationSupport {private static final String RESOURCES_HANDLER = "/resources/";private static final String RESOURCES_LOCATION = RESOURCES_HANDLER + "**";@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler(RESOURCES_HANDLER).addResourceLocations(RESOURCES_LOCATION);}}可以將favicon.ico文件添加到resource/images目錄,但是隨后應(yīng)創(chuàng)建其他@Controller以將任何favicon.ico請求轉(zhuǎn)發(fā)到實際圖標(biāo)。 我正在使用配置中的靜態(tài)類來執(zhí)行此操作:
@Configuration public class WebMvcConfig extends WebMvcConfigurationSupport {@Controllerstatic class FaviconController {@RequestMapping("favicon.ico")String favicon() {return "forward:/resources/images/favicon.ico";}}}怎么運行的? 當(dāng)客戶端請求localhost:8080/favicon.ico ,控制器會將請求轉(zhuǎn)發(fā)到靜態(tài)資源。 將來,當(dāng)您需要為網(wǎng)站提供favicon.ico時,只需替換resources/images目錄中的文件即可。
我最近想到的另一種方法是,添加一個@Controller ,它具有一個返回空@ResponseBody方法:
@Controller class FaviconController {@RequestMapping("favicon.ico")@ResponseBodyvoid favicon() {} }它將解決404 Not Found問題,但將來您將需要記住進行配置更改,以防您需要為網(wǎng)站添加favicon.ico。
- 可以在GitHub上的Spring MVC快速入門原型中找到該配置。
翻譯自: https://www.javacodegeeks.com/2014/02/configure-favicon-ico-in-spring-mvc-based-application.html
總結(jié)
以上是生活随笔為你收集整理的在基于Spring MVC的应用程序中配置favicon.ico的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux换行符号(linux >
- 下一篇: 使用Spring WS创建合同优先的We