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>
请注意,启用目录列表对于测试服务器很方便,但对于生产服务器则不希望。
祝您学习愉快!