有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何配置Tomcat静态提供哪些文件扩展名

在Tomcat 6服务器上托管的现有java web应用程序中,我注意到所有以某些特定扩展(如.png.gif)结尾的URL都是静态服务的,而如果我将扩展替换为更奇特的扩展(如.eot),则它将由servlet处理

此文件扩展名列表在何处配置?我查看了{}和{},但没有发现任何关于{}或{}的内容


共 (3) 个答案

  1. # 1 楼答案

    除了@Stefoan solution(最佳解决方案)Tomcat AS定义映射到defaultDefaultServlet作为名称,并提供所有静态资源(jpg、html、css、gif…)在它上面Here you can find it's documentation

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

    <servlet-mapping>   
      <servlet-name>default</servlet-name>
      <url-pattern>*.eot</url-pattern>
    </servlet-mapping>
    
  2. # 2 楼答案

    事实上,我的问题是特定于Hippo CMS/Bloomreach体验配置(在我的项目中使用)。它需要在/hst:hst/hst:hosts节点下的hst:suffixexclusions属性列表中添加一个.eot,如HippoCMS - Request Handling - Mount Matching中所述

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

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

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

  3. # 3 楼答案

    只要未定义servlet(-mapping),所有文件都是静态提供的。mime扩展是在Tomcats默认web中预定义的。文件夹/conf中的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>
    ...