favicon.ico没有显示在spring mvc中

时间:2015-03-10 13:21:58

标签: java spring-mvc favicon

我正在尝试使用spring mvc 4和apache tomcat 7(在firefox中)添加一个favicon.ico。 我检查了很多解决方案,但似乎没有人工作。

的web.xml:

<mime-mapping>
    <extension>ico</extension>
    <mime-type>image/x-icon</mime-type>
</mime-mapping>

MVC核-config.xml中:

<mvc:default-servlet-handler/>
<!-- <mvc:resources mapping="/resources/**" location="/resources/css" /> -->
<mvc:resources location="/favicon.ico" mapping="/favicon.ico" />

JSP:

<link href="MYPROJECT/favicon.ico" rel="icon" type="image/x-icon">

(我也试过没有MYPROJECT和其他变种......)。

我在webapps下放置了favicon.ico文件(也在其他文件夹中试过)。

加载页面时,不显示任何图标。

注意:我尝试直接加载图标http://localhost:8080/MYPROJECT/favicon.ico,但收到以下错误消息:the image 'http://localhost:8080/MYPROJECT/favicon.ico' cannot be displayed because it contains errors。我下载了其他的favicon.ico,但图标看起来已损坏。

在检查firefox中的元素时,我没有打电话给favicon.ico。

有什么建议吗?

更新 在我的eclipse控制台中,我看到了:

  

查找路径的处理程序方法/   15:48:05.622 [http-bio-8080-exec-6] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - 找不到[/]的处理程序方法   15:48:05.622 [http-bio-8080-exec-6] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - 查找路径的处理程序方法/   15:48:05.623 [http-bio-8080-exec-6] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - 找不到[/]的处理程序方法   15:48:05.623 [http-bio-8080-exec-6] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - 使用处理程序[org.springframework.web.servlet.mvc.ParameterizableViewController@380baa3a]和1个拦截器将[/]映射到HandlerExecutionChain

UPDATE2 mvc config xml:

<import resource="mvc-view-config.xml"/>
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>     
<mvc:annotation-driven conversion-service="conversionService"/>   
<context:component-scan base-package="controllers,logic.preprocess"/>
<mvc:view-controller path="/" view-name="index" />
<mvc:default-servlet-handler/>

<mvc:resources location="/favicon.ico" mapping="/favicon.ico" />

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
    p:basename="messages/messages"/>

</beans>

包含的mvc-view-config.xml:

<bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="viewResolvers">
        <list>
            <bean
                class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="viewClass"
                    value="org.springframework.web.servlet.view.JstlView" />
                <property name="prefix" value="/WEB-INF/jsp/" />
                <property name="suffix" value=".jsp" />
                <property name="contentType" value="text/html;charset=UTF-8"></property>
            </bean>


<bean       class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="order" value="1"/> </bean>

 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="order" value="2" /> </bean>

 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="order" value="3" />
     <property name="alwaysUseFullPath" value="true" />
     <property name="mappings">
     <props>
         <prop key="controllers/TaskController">taskController</prop>
         <prop key="controllers/ResultController">resultController</prop>
     </props>
     </property>
 </bean>

更新3 我把文件放在资源/图像下,它似乎只在chrome上运行PARTIALLY(没有快捷方式)但在firefox上没有。

谢谢, 麦克

3 个答案:

答案 0 :(得分:3)

在FireFox和Chrome中测试过:我遇到了同样的问题。这是如何解决它。我做了this answer suggested

的web.xml:

<mime-mapping>
    <extension>ico</extension>
    <mime-type>image/x-icon</mime-type>
</mime-mapping>

MVC-调度-servlet.xml中:

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

(在我的情况下不需要<mvc:default-servlet-handler />

genericpage.tag(我使用模板,但这可以是你的jsp文件):

<link rel="shortcut icon" href='<c:url value="/resources/images/favicon.ico" />' type="image/x-icon">
<link rel="icon" href='<c:url value="/resources/images/favicon.ico" />' type="image/x-icon">

NB:请注意,您必须使用href中的<c:rul value=位,否则它将无效。

项目结构:

Web pages
+--META-INF
+--WEB-INF
+--resources
   +--mytheme
      +--css
      +--images
         +--favicon.ico

出于某种原因,当它只在/ resources / mytheme /

中时它不起作用

答案 1 :(得分:1)

存储favicon.ico - 来自WEB-INF目录的一个。

 <link href="/favicon.ico" rel="icon" type="image/x-icon">

答案 2 :(得分:0)

您需要在Web应用程序调度程序Servlet中添加以下标记,即

springmvc-dispatcher-servlet.xml:

指定资源位置以加载JS,CSS,图像等

<mvc:resources mapping="/resources/**" location="/resources/" 
        cache-period="45556999"/>

您的Web应用程序结构应如下所示

web_application_structure

您的Web应用程序WebContent文件夹结构应如下所示

WebContent

+resources
     -->images
    -->favicon.ico

将这些行放在<header></header>标记之间的Web应用程序jsp页面中,如下所示

<head>

    <link rel="shortcut icon" href='<c:url value="/resources/images/favicon.ico" />'     type="image/x-icon">
    <link rel="icon" href='<c:url value="/resources/images/favicon.ico" />' type="image/x-icon">
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Login</title>
    <link href="<c:url value="/resources/css/bootstrap.css" />" rel="stylesheet">
    <link href="<c:url value='/resources/css/app.css' />" rel="stylesheet">
</head>