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

cod*_*441 31 java tomcat directory-listing

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

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

Bal*_*usC 53

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

<init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
</init-param>
Run Code Online (Sandbox Code Playgroud)

<init-param>
    <param-name>listings</param-name>
    <param-value>true</param-value>
</init-param>
Run Code Online (Sandbox Code Playgroud)

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

  • 这可以在每个 Web 应用程序的基础上完成。您只需修改应用程序的“WEB-INF/web.xml”,而不是 Tomcat 的站点范围的“conf/web.xml”。您需要将整个“DefaultServlet”声明、设置和映射复制到您自己的“WEB-INF/web.xml”中,但一旦这样做,您就可以为单个 Web 应用程序而不是所有 Web 应用程序启用目录列表部署在该 Tomcat 实例上。 (2认同)

小智 20

您也可以从给定的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>
Run Code Online (Sandbox Code Playgroud)

在此示例中,"/ ws-definitions /"下面的目录将被侦听.


ada*_*shr 6

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

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

基本思路就是将tomcat的main中的listings参数值改为。trueweb.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>
Run Code Online (Sandbox Code Playgroud)

但上面会暴露所有目录。为了进行精细控制,请按照此处说明的步骤操作:

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