Tomcat – 启用/禁用目录列表

Tomcat – 启用/禁用目录列表

原文: https://howtodoinjava.com/tomcat/tomcat-enabledisable-directory-listing/

当您的应用部署在 tomcat Web 服务器中,并且您请求指向目录而不是文件的 URL(例如http://host:port/helloWorldApp/)时,您可以将 Tomcat 配置为提供目录列表或欢迎文件,或发出错误“404 页面未找到”。 让我们看看如何启用或禁用 tomcat 服务器中的目录列表。

Table of Contents

Enabling Directory Listing for ALL Webapps
Enabling Directory Listing for any particular Webapp

为所有 Webapp 启用目录列表

要为所有 Web 应用启用目录列表,您可以通过将“default” servlet 的“listings”从“false”更改为“true”来修改<CATALINA_HOME>\conf\web.xml,如下所示:

<!-- The default servlet for all web applications, that serves static     -->
<!-- resources.  It processes all requests that are not mapped to other   -->
<!-- servlets with servlet mappings.                                      -->
<servlet>
  <servlet-name>default</servlet-name>
  <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
  <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
  </init-param>
  <init-param>
    <param-name>listings</param-name>
    <param-value>true</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<!-- The mapping for the default servlet -->
<servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

<!-- ==================== Default Welcome File List ===================== -->
<!-- When a request URI refers to a directory, the default servlet looks  -->
<!-- for a "welcome file" within that directory and, if present,          -->
<!-- to the corresponding resource URI for display.  If no welcome file   -->
<!-- is present, the default servlet either serves a directory listing,   -->
<!-- or returns a 404 status, depending on how it is configured.          -->
<welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

上面的配置将 URL “/”(Web 上下文的根目录)映射到 Java 类DefaultServlet。 我们通过将 Servlet 的初始化参数listings更改为true来启用目录列表

如果用户请求目录,并且目录列表已启用并且包含<welcome-file>列表中的文件之一,则将提供欢迎文件; 否则,将提供目录列表。 另一方面,如果接收到目录请求且未启用目录列表,则服务器将返回错误“404 页面未找到”。

为任何特定的 Webapp 启用目录列表

如果只希望允许特定 Web 应用的目录列表,则可以全局禁用“<CATALINA_HOME>\conf\web.xml”中的目录列表,并在特定于应用的WEB-INF\web.xml中定义以下<servlet><servlet-mapping>,如下所示 :

<servlet>
  <servlet-name>DirectoryListing</servlet-name>
  <servlet-class>com.package.MyServlet</servlet-class>
  <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
  </init-param>
  <init-param>
    <param-name>listings</param-name>
    <param-value>true</param-value>
  </init-param>
</servlet>

<servlet-mapping>
  <servlet-name>DirectoryListing</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

请注意,启用目录列表对于测试服务器很方便,但对于生产服务器则不希望。

祝您学习愉快!