web-dev-qa-db-ja.com

Tomcatのフォルダ内のすべてのファイルをリストするにはどうすればよいですか?

Tomcatに多くのExcelドキュメントを含むフォルダーがあり、ブラウザーでそのフォルダーのURL(http; // localhost:8080/myfolderなど)にアクセスしたときにそれらのファイルを使用できるようにしたい

フォルダーにアクセスしようとすると、404エラーが表示されます。そのフォルダにあるファイルにアクセスしようとすると、動作します。

31

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>

これは、Webアプリのallフォルダーに影響することに注意してください。個々のフォルダーに対してのみこれを有効にしたい場合は、ファイルを収集するためにサーブレット側のJava.io.File AP​​Iの助けを借りて仕事をするServletコードを自分で記述する必要があります。 JSP側のHTML/CSSの束で、きちんと表示します。

52
BalusC

特定のURLパターンから開始することもできます。サーブレットとservlet-mappingをアプリ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 /」の下のディレクトリがリッスンされます。

20
swisswheel

これを行う方法を説明したドキュメントを次に示します。

http://Tomcat.Apache.org/Tomcat-7.0-doc/default-servlet.html

基本的な考え方は、Tomcatのメインweb.xmllistingsパラメーターの値を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

4
adarshr

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

以下に簡単な servlet を示します。これは、完全にカスタム化されたアプローチの出発点となる可能性があります。

2
trashgod

リストパラメータ値の変更が機能しない場合は、ウェルカムファイルリストを編集してみてください

デフォルト値は次のとおりです。

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

それらを削除すると、完全に動作するはずです

2
Rahul Roy

サーブレットの外部のファイルにWebベースのファイルブラウザーを実装しようとしている場合は、 この回答 に記載されているカスタムwebappを使用できます。

0
kostmo