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

2022-09-04 21:14:14

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

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

此目录结构如下所示:

/ui
  /images
  /styles
  /scripts
  ...

Spring很好地托管了我的图像,脚本和样式。但是,尝试检索图像目录中的任何文件时,我收到404错误。所有PNG,GIF和JPG图像在同一目录中工作正常。我试图更具体地说明要托管哪些目录,甚至将文件指定为文件中的资源,并且仍然得到相同的结果:*.ico.icocontext.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应用程序的根路径中。如果我使用png文件作为favicon,它适用于除IE之外的所有浏览器。如果可能的话,我想为所有浏览器解决这个问题。在这一点上的任何帮助将不胜感激。

编辑2:我已经在XHTML文档中有一个链接标签:

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

答案 1

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

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

谢谢斯卡夫曼!


答案 2

推荐