3

在托管在 Tomcat 6 服务器上的现有 Java Web 应用程序中,我注意到所有 URL 都以某些特定扩展名结束,例如.png.gif静态服务,而如果我用更奇特的东西替换扩展名,.eot那么它就会由 servlet 处理。

此文件扩展名列表在哪里配置?我登记了web.xmlserver.xml但没有发现任何提及pngor gif

4

3 回答 3

4

只要没有定义 servlet(-mapping),所有文件都是静态提供的。mime 扩展是在文件夹 /conf 中的 Tomcat 默认 web.xml 中预定义的:

<!-- ===================== Default MIME Type Mappings =================== -->
<!-- When serving static resources, Tomcat will automatically generate    -->
<!-- a "Content-Type" header based on the resource's filename extension,  -->
<!-- based on these mappings.  Additional mappings can be added here (to  -->
<!-- apply to all web applications), or in your own application's web.xml -->
<!-- deployment descriptor.                                               -->

<mime-mapping>
    <extension>123</extension>
    <mime-type>application/vnd.lotus-1-2-3</mime-type>
</mime-mapping>
...
于 2014-04-11T11:47:22.660 回答
2

除了@Stefoan 解决方案,它是最佳解决方案,将映射到的名称Tomcat AS定义为名称并在其上提供所有静态资源(jpg、html、css、gif ...)。在这里你可以找到它的文档DefaultServletdefault

因此,您只需添加一个指向它的 servlet 映射,即可将一些自定义文件扩展名作为静态资源提供服务:

<servlet-mapping>   
  <servlet-name>default</servlet-name>
  <url-pattern>*.eot</url-pattern>
</servlet-mapping>
于 2014-04-11T12:02:41.973 回答
2

好吧,实际上我的问题是特定于 Hippo CMS / Bloomreach Experience 配置(在我的项目中使用的)。它需要在节点下的属性.eot列表中添加一个,如HippoCMS - 请求处理 - 挂载匹配中所述。hst:suffixexclusions/hst:hst/hst:hosts

您也可以将排除规则添加到site/src/main/webapp/WEB-INF/hst-config.properties文件中:

filter.prefix.exclusions = /ping/, /fonts/
filter.suffix.exclusions = .eot, .woff, .woff2

这将解决 Tomcat 在大多数字体文件上返回 HTTP 404 错误代码的问题。

于 2014-10-31T13:33:17.150 回答