Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在tomcat上列出文件夹中的所有文件?_Java_Tomcat_Directory Listing - Fatal编程技术网

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

Java 如何在tomcat上列出文件夹中的所有文件?,java,tomcat,directory-listing,Java,Tomcat,Directory Listing,我在tomcat上有一个包含许多excel文档的文件夹,我希望在浏览器中找到该文件夹的url时,这些文件可用(例如http;//localhost:8080/myfolder) 当我试图访问一个文件夹时,我得到一个404错误。如果我尝试访问该文件夹中的文件,它就会工作。这里有一些文档说明如何执行此操作 基本思想是在tomcat的mainweb.xml中将listings参数的值更改为true 违约 org.apache.catalina.servlets.DefaultServlet 调试

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


当我试图访问一个文件夹时,我得到一个404错误。如果我尝试访问该文件夹中的文件,它就会工作。

这里有一些文档说明如何执行此操作

基本思想是在tomcat的main
web.xml
中将
listings
参数的值更改为
true


违约
org.apache.catalina.servlets.DefaultServlet
调试
0
列表
假的
1.
但以上内容将公开所有目录。要进行精细控制,请按照此处介绍的步骤操作:


默认情况下,Tomcat的
DefaultServlet
配置为不显示目录列表。您需要打开Tomcat自己的
/conf/web.xml
文件(在Tomcat安装文件夹中查找),搜索
DefaultServlet
条目,然后从


列表
假的


列表
真的

请记住,这会影响webapp的所有文件夹。如果只对单个文件夹启用此功能,您必须自己编写一些
Servlet
代码,在Servlet端的
java.io.File
API的帮助下完成这项工作,以收集文件和JSP端的一些HTML/CSS以简洁的方式呈现出来。

这里有一个简单的方法,可能是完全定制方法的开始。

您也可以启用它从给定的url模式开始。 只需将servlet和servlet映射添加到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>

ListWsDefinitions
org.apache.catalina.servlets.DefaultServlet
调试
0
列表
真的
100
ListWsDefinitions
/ws定义/*

在此示例中,将侦听“/ws-definitions/”下面的目录。

如果更改listings参数值无效,请尝试编辑欢迎文件列表

默认值如下所示:

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

index.html
index.htm
index.jsp
编辑如下:

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

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

违约
org.apache.catalina.servlets.DefaultServlet
调试
0
列表
真的
1.
您还需要添加以下内容

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

违约
/

如果您只是尝试为servlet之外的文件实现基于web的文件浏览器,您可以使用中提到的自定义webapp。

发布您正在使用的代码。另外,请确保您没有在此处接受用户输入,否则可能会显示/etc/shadow。它看起来像是htaccess权限问题。@Woot4Moo没有代码。它只是一个文件夹,里面有一些文件。我希望能够导航到该文件夹的url,并让它像apache服务器一样显示其中的所有文件。@用户如果没有代码,那么为什么要将其标记为java和jsp?修改标记,因为我认为这些标记比您没有否决的java和jsp标记稍微有用,但是您最初的回答只是告诉如何自定义默认目录列表布局,而不是如何启用它。你能告诉我那些准警察应该去哪里吗。thanks@Solver:另一个答案是不可移植的(即webapp部署到不同品牌甚至不同版本的服务器时会崩溃)。你看,它不是标准ServletAPI的一部分。这可以在每个webapp的基础上完成。您只需修改应用程序的
WEB-INF/WEB.xml
,而不是Tomcat的站点范围的
conf/WEB.xml
。您需要将整个
DefaultServlet
声明、设置和映射复制到您自己的
WEB-INF/WEB.xml
中,但一旦这样做,您就可以为单个WEB应用程序而不是部署在该Tomcat实例上的所有WEB应用程序启用目录列表。@Christopher:它不可移植,请参阅前面的注释。@BalusC确保它不可移植,但目录列表本身也不可移植。servlet规范不保证对不存在欢迎文件的目录的请求将显示目录列表。因此,容器提供的目录列表已经不符合规范,因此不可移植。我尝试使用tomcat访问文件列表,效果很好。非常感谢。不,这样的webapp在部署到不同的服务器品牌/版本时会崩溃。换句话说,这样的网络应用程序是不可移植的。而是在服务器端而不是webapp端进行配置。或者,homegrow您自己的可重用目录列表servlet。