1

我正在尝试在本地托管的 spring 应用程序中使用 favicon。根据favicon.ico 没有在每个 Tomcat 7.0 的 spring mvc 3.2.2 中显示?, 我已经添加了

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

在我的 web.xml 中:

 <display-name>Coaching</display-name>
<servlet>
    <servlet-name>Coaching</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

<mime-mapping>
    <extension>ico</extension>
    <mime-type>image/x-icon</mime-type>
</mime-mapping>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

添加

       <mvc:default-servlet-handler /> 

在运行应用程序或应用程序实际上未运行时,config.xml 中出现错误。我的 applicationContext.xml 是:

              <context:component-scan base-package="com.coaching.controller" />

<!-- Enable annotation driven controllers, validation etc... -->
<mvc:annotation-driven />

<!-- Resolves view names to protected .jsp resources within the /WEB-INF/views 
    directory -->
<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">



    <property name="prefix">
        <value>/WEB-INF/views/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

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

我的 favicon.ico 位于 webapp 的根目录(也就是 WEB-INF 的上一层)目录(从 Spring MVC 添加 favicon)。但它没有出现在网址栏中。我将其渲染为

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

在 jsp 页面的头部。我什至尝试过https://stackoverflow.com/a/17039121/2116229但应用程序没有再次运行。

我尝试了图标的几个位置,但没有结果。它必须需要一些 spring mvc 配置。有人可以告诉我我错过了什么。

我希望 favicon 也出现在 localhost 中。

4

1 回答 1

2

调度程序 servlet 的映射是问题所在。它只对 *.html 做出反应,其他一切都被忽略。

<servlet-mapping>
  <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
  <url-pattern>*.html</url-pattern>
</servlet-mapping>

这基本上使您<mvc:resources */><mvc:default-servlet-handler />未使用。您应该将 servlet 映射到 / 以使所有内容都通过 DispatcherServlet。

<servlet-mapping>
  <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

接下来,您的 servlet 元素和 servlet 映射不匹配。名称应匹配。所以我猜名字应该是“Coaching”而不是“Spring MVC Dispatcher Servlet”

<servlet-mapping>
  <servlet-name>Coaching</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
于 2013-08-21T13:00:03.190 回答