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>
これは、Webアプリのallフォルダーに影響することに注意してください。個々のフォルダーに対してのみこれを有効にしたい場合は、ファイルを収集するためにサーブレット側のJava.io.File
APIの助けを借りて仕事をするServlet
コードを自分で記述する必要があります。 JSP側のHTML/CSSの束で、きちんと表示します。
特定の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 /」の下のディレクトリがリッスンされます。
これを行う方法を説明したドキュメントを次に示します。
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
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 を示します。これは、完全にカスタム化されたアプローチの出発点となる可能性があります。
リストパラメータ値の変更が機能しない場合は、ウェルカムファイルリストを編集してみてください
デフォルト値は次のとおりです。
<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>
それらを削除すると、完全に動作するはずです
サーブレットの外部のファイルにWebベースのファイルブラウザーを実装しようとしている場合は、 この回答 に記載されているカスタムwebappを使用できます。