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