繁体   English   中英

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

[英]How can I list all the files in folder on tomcat?

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

在我尝试访问文件夹时,我收到404错误。 如果我尝试访问该文件夹中的文件,它的工作原理。

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

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

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

请记住,这会影响您的webapp的所有文件夹。 如果你只想为一个单独的文件夹启用它,你必须自己编写一些Servlet代码,它在servlet端的java.io.File API的帮助下完成工作,收集文件和一些HTML / CSS在JSP方面以一种整洁的方式呈现它。

您也可以从给定的url模式开始启用它。 只需将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 /”下面的目录将被侦听。

这里有一些文档解释了如何执行此操作。

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

其基本思路是,它的值更改listings参数,以true在主web.xml的tomcat。

<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

如果您使用的是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>

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

默认值如下:

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

删除它们应该完美

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM