Tomcat 之 启用/禁用目录列表

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

目录

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

为所有Webapp启用目录列表

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

<!-- 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的初始化参数更改为true来启用目录列表listings

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

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

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

<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>

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

学习愉快!

saigon has written 1440 articles

Leave a Reply