Spring mvc:资源未找到 *.ico 文件

Posted

技术标签:

【中文标题】Spring mvc:资源未找到 *.ico 文件【英文标题】:Spring mvc:resource not finding *.ico files 【发布时间】:2011-07-12 19:26:37 【问题描述】:

我很难让我的 Spring 3.0 应用程序将 favicon.ico 类型的文件识别为资源。我在spring-context.xml 文件中定义了我的资源目录,如下所示:

<mvc:resources mapping="/ui/**" location="/ui/" />

这个目录结构看起来像:

/ui
  /images
  /styles
  /scripts
  ...

Spring 可以很好地托管我的图像、脚本和样式。但是,在尝试检索 images 目录中的任何 *.ico 文件时出现 404 错误。所有 PNG、GIF 和 JPG 图像都可以在同一个目录中正常工作。我尝试更具体地指定托管哪些目录,甚至将.ico 文件指定为context.xml 文件中的资源,但仍然得到相同的结果:

<mvc:resources mapping="/ui/images/*.ico" location="/ui/images" />

我还尝试将 servlet 映射添加到默认 servlet。当我在网上进行研究时,这似乎对某些人有用,但对我来说并不成功。

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.ico</url-pattern>
</servlet-mapping>

编辑:我还将 favicon.ico 文件添加到 Web 应用程序的根路径。如果我为 favicon 使用 png 文件,它可以在除 IE 之外的所有浏览器中使用。如果可能的话,我想为所有浏览器解决这个问题。 在这一点上的任何帮助将不胜感激。

EDIT2:我已经在 Xhtml 文档中有一个链接标签:

<link rel="shortcut icon" type="image/vnd.microsoft.icon" href="/ui/images/favicon.ico" />

【问题讨论】:

您意识到favicon.ico 必须进入根路径,对吧?即/favicon.ico,而不是/ui/favicon.ico 您使用的是哪个 AppServer 或 Web Server? @skaffman - 那是过时的。 new W3C recommendation 没有任何此类限制。 检查 Tomcat 上的 ICO 扩展是否需要任何 MIME 设置。 @skaffman 成功了!谢谢你的帮助!我会发布官方答案。 【参考方案1】:

由于我使用 Tomcat 6 来托管应用程序,因此我的解决方案是将 MIME 类型添加到应用程序的 web.xml 文件中,如下所示。

<mime-mapping>
    <extension>ico</extension>
    <mime-type>image/vnd.microsoft.icon</mime-type>
</mime-mapping>

感谢斯卡夫曼!

【讨论】:

以上是关于Spring mvc:资源未找到 *.ico 文件的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 自定义 favicon.ico 未显示

Spring-Boot MVC 模板未加载(未找到 404)

网页未找到。 Spring MVC + 码头

MVC WebApi 路由未找到 HTTP 资源

Spring MVC + Eclipse:HTTP 404 – 未找到

获取此 org.springframework.web.servlet.DispatcherServlet noHandlerFound 错误和警告:在 Spring MVC 中未找到 HTTP 请求