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