Spring mvc: ресурс не находит *.ico файлы
Мне было очень трудно заставить мое приложение Spring 3.0 распознавать файлы типа favicon.ico
как ресурс. Я определил свой каталог ресурсов в файле spring-context.xml
следующим образом:
<mvc:resources mapping="/ui/**" location="/ui/" />
Эта структура каталогов выглядит так:
/ui
/images
/styles
/scripts
...
Spring отлично хранит мои изображения, скрипты и стили. Тем не менее, я получаю ошибку 404 при попытке получить любые файлы *.ico
в каталоге изображений. Все изображения PNG, GIF и JPG прекрасно работают в этом же каталоге. Я попытался уточнить, в каких каталогах размещать и даже указывать файлы .ico
в качестве ресурсов в файле context.xml
и получать одинаковые результаты:
<mvc:resources mapping="/ui/images/*.ico" location="/ui/images" />
Я также попытался добавить отображение сервлета в сервлет по умолчанию. Кажется, это сработало для некоторых, когда я исследовал его в Интернете, но не доказал свою эффективность.
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.ico</url-pattern>
</servlet-mapping>
EDIT: я также добавил файл favicon.ico в корневой путь веб-приложения. Если я использую png файл для значка, он работает в каждом браузере, но в IE. Я хотел бы решить эту проблему для всех браузеров, если это возможно.
Любая помощь на этом этапе будет принята с благодарностью.
EDIT2: у меня уже есть тег ссылки в документе 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>
Спасибо, скаффман!