我有一個文件夾中有許多擅長在Tomcat在它的文件,我想這些文件可用,當我走在該文件夾的網址在瀏覽器(例如:http; //本地主機:8080/MyFolder文件)如何列出tomcat中的文件夾中的所有文件?
當我嘗試訪問文件夾時,出現404錯誤。通過如果我嘗試訪問該文件夾中的文件,它的工作原理。
我有一個文件夾中有許多擅長在Tomcat在它的文件,我想這些文件可用,當我走在該文件夾的網址在瀏覽器(例如:http; //本地主機:8080/MyFolder文件)如何列出tomcat中的文件夾中的所有文件?
當我嘗試訪問文件夾時,出現404錯誤。通過如果我嘗試訪問該文件夾中的文件,它的工作原理。
的Tomcat DefaultServlet
是默認配置爲不顯示目錄列表。您需要打開Tomcat的自己/conf/web.xml
文件(看在Tomcat的安裝文件夾),搜索DefaultServlet
的<servlet>
條目,然後從
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
改變其listings
初始化參數
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
請記住,這會影響所有 Web應用程序的文件夾。如果你想只爲一個單獨的文件夾啓用它,你必須自己編寫一些Servlet
代碼,它可以在servlet端的java.io.File
API的幫助下完成這個工作,以收集JSP側的文件和一些HTML/CSS到以整潔的方式呈現它。
我已將web-inf文件添加到原始文章中。你能告訴我這些參數應該放在哪裏嗎?謝謝 – code511788465541441
@Solver:另一個答案是不可移植的(即當部署到不同品牌的服務器,甚至可能不同的版本時,webapp會崩潰)。你看,它不是標準Servlet API的一部分。 – BalusC
這可以在每個webapp的基礎上完成。您只需修改應用程序的「WEB-INF/web.xml」而不是Tomcat的站點範圍的'conf/web.xml'。您需要將整個'DefaultServlet'聲明,設置和映射覆制到您自己的'WEB-INF/web.xml'中,但是一旦您這樣做,就可以爲單個Web應用程序而不是所有Web應用程序啓用目錄列表部署在該Tomcat實例上。 –
這裏有一些文件解釋如何做到這一點。
http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html
的基本理念是給Tomcat的主要web.xml
listings
參數的值更改爲true
。
<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
下面是一個簡單的servlet,這可能是一個完全自定義方法的開始。
您也可以從給定的url模式開始啓用它。 就在servlet和servlet映射添加到您的應用程序的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-定義/」會聽。
如果更改列表參數值的方式不工作,嘗試編輯歡迎文件列表
默認值分別如下:
<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>
刪除它們應該完美地工作
謝謝,沒有這個,我沒有用。 – masterxilo
如果您使用的是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>
如果你只是想實現一個網頁是什麼基於文件的瀏覽器可以讀取servlet外部的文件,您可以使用this answer中提到的自定義webapp。
張貼您正在使用的代碼。另外,請確保您不要在這裏接受用戶輸入,否則您可能會透露/ etc/shadow – Woot4Moo
它看起來像是一個htaccess權限問題。 – Snicolas
@ Woot4Moo沒有代碼。它只是一個包含一些文件的文件夾。我希望能夠導航到該文件夾的網址,並讓它顯示所有文件,就像Apache服務器一樣。 – code511788465541441