如何在tomcat上列出文件夹中的所有文件?

时间:2011-08-15 17:01:44

标签: java tomcat directory-listing

我在tomcat上有一个包含许多excel文档的文件夹,当我在浏览器中找到该文件夹​​的url时,我希望这些文件可用(例如http; // localhost:8080 / myfolder)

当我尝试访问文件夹时,我收到404错误。如果我尝试访问该文件夹中的文件,则可以正常工作。

7 个答案:

答案 0 :(得分:52)

默认情况下,Tomcat的DefaultServlet配置为不显示目录列表。您需要打开Tomcat自己的/conf/web.xml文件(查看Tomcat安装文件夹),搜索<servlet>的{​​{1}}条目,然后从DefaultServlet初始化参数>

listings

<init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
</init-param>

请注意,这会影响您的webapp的所有文件夹。如果你只想为一个单独的文件夹启用它,你必须自己编写一些<init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> 代码,这可以帮助servlet端的Servlet API来收集文件和一些JSP方面的HTML / CSS以一种简洁的方式呈现它。

答案 1 :(得分:19)

您也可以从给定的网址格式开始启用它。 只需将servlet和servlet-mapping添加到app web.xml

即可
<servlet>
    <!-- List files in /ws-definitions -->
    <servlet-name>ListWsDefinitions</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>100</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>ListWsDefinitions</servlet-name>
    <url-pattern>/ws-definitions/*</url-pattern>
</servlet-mapping>

在这个示例中,“/ ws-definitions /”下面的目录将被监听。

答案 2 :(得分:4)

以下是一些解释如何执行此操作的文档。

http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html

基本思路是将listings参数的值更改为tomcat主true中的web.xml

<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>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

但是上面会公开所有目录。为了获得良好的控制,请按照此处说明的步骤进行操作:

http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html#dir

答案 3 :(得分:3)

如果您使用的是Tomcat 6(实现Servlet 2.5规范)或更新版本,则无需更改CATALINA_HOME / conf /目录中的web.xml以显示目录列表。相反,您应该在WEB-INF下更改Web应用程序自己的web.xml文件。

正如Adarshr所提到的,这是你需要添加到web.xml

的内容
<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>

您还需要添加以下内容

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

答案 4 :(得分:2)

这是一个简单的servlet,可能是完全自定义方法的开始。

答案 5 :(得分:2)

如果更改列表参数值不起作用,请尝试编辑欢迎文件列表

默认值如下:

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

按如下方式编辑:

<welcome-file-list>
    <welcome-file></welcome-file>
    <welcome-file></welcome-file>
    <welcome-file></welcome-file>
</welcome-file-list>

删除它们应该可以正常工作

答案 6 :(得分:0)

如果您只是尝试为servlet之外的文件实现基于Web的文件浏览器,则可以使用this answer中提到的自定义Web应用程序。