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 + Eclipse:HTTP 404 – 未找到
获取此 org.springframework.web.servlet.DispatcherServlet noHandlerFound 错误和警告:在 Spring MVC 中未找到 HTTP 请求