2011-08-15 1 views
28

私はたくさんのExcelドキュメントを持ったフォルダを持っています。ブラウザでそのフォルダのURL(例えばhttp; // localhost:8080/myfolder)を手に入れたら、それらのファイルを利用できます。Tomcatのフォルダにあるすべてのファイルを一覧表示するにはどうすればいいですか?

私が404エラーを取得するフォルダにアクセスしようとする瞬間に。私はそのフォルダにあるファイルにアクセスしようとすると、それは動作します。

+0

あなたが使用しているコードを投稿してください。また、ここでユーザー入力を行わないようにしてください。あるいは、/ etc/shadow – Woot4Moo

+0

がhtaccess権限の問題のように見えます。 – Snicolas

+1

@ Woot4Mooコードはありません。それはいくつかのファイルが入った単なるフォルダです。私はそのフォルダのURLに移動して、それがApacheサーバのようにすべてのファイルを表示できるようにしたい。 – code511788465541441

答えて

48

DefaultServletをディレクトリリストを表示しないように設定されたデフォルトです。あなたは覚えておいて、Tomcatの独自の/conf/web.xmlファイル(Tomcatのインストールフォルダ内を見て)開くDefaultServlet<servlet>エントリを検索し、

<init-param> 
    <param-name>listings</param-name> 
    <param-value>true</param-value> 
</init-param> 

<init-param> 
    <param-name>listings</param-name> 
    <param-value>false</param-value> 
</init-param> 

からそのlistings初期化パラメータを変更する必要があることこれはすべて webappのフォルダに影響します。これを個々のフォルダに対してのみ有効にしたい場合は、サーブレット側のjava.io.File APIの助けを借りてジョブを実行して、JSP側のHTML/CSSのいくつかの束を収集するコードを自分で作成する必要がありますそれをすっきりした形で提示する。

+0

元の投稿にweb-infファイルを追加しました。それらのパラマターがどこに行くべきかについて私に教えてください。ありがとう – code511788465541441

+0

@ソルバー:もう1つの答えは移植性がありません(webappは、別のメイク、場合によっては異なるバージョンのサーバーにデプロイするとクラッシュする)。標準的なサーブレットAPIの一部ではありません。 – BalusC

+1

これは、Webアプリケーションごとに行うことができます。 Tomcatのサイト全体の 'conf/web.xml'ではなく、アプリケーションの' WEB-INF/web.xml'を変更するだけです。すべての 'DefaultServlet'宣言、設定、マッピングを自分自身の' WEB-INF/web.xml'にコピーする必要がありますが、そうしたら、すべてのWebアプリケーションではなく単一のWebアプリケーションに対してディレクトリリストを有効にすることができますそのTomcatインスタンスにデプロイされます。 –

4

これを行う方法を説明するドキュメントがあります。

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

基本的な考え方は、Tomcatのメインweb.xmltruelistingsパラメータの値を変更することです。

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

ただし、上記ですべてのディレクトリが公開されます。細かな制御を持つためには、手順に従ってくださいここで説明:Tomcatのの

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

+0

@downvoter:お気軽にコメントしますか? – adarshr

+0

私はdownvoteをしませんでしたが、あなたの最初の答えは、どのようにデフォルトのディレクトリリストのレイアウトをカスタマイズするかを教えただけでした。 – BalusC

2

ここでは完全にカスタムのアプローチの出発点になる単純なservletがあります。

18

また、指定したURLパターンから開始することもできます。 はちょうどこの例では

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

あなたにアプリのweb.xmlをサーブレットとサーブレット・マッピングを追加するには、以下のディレクトリ「/ 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> 

をリスティングのparam値を変更して動作しない場合

+0

私はtomcatを使ってファイルリストにアクセスしようとしましたが、うまくいきました。ありがとうございました! – Ricardo

+4

これは受け入れられた回答である必要があります! – jutky

+0

いいえ、このようなwebappは、別のサーバーのmake/versionにデプロイするとクラッシュします。言い換えれば、このようなwebappは移植性がありません。むしろwebapp endではなくserver endで設定してください。あるいは、あなた自身の再利用可能なディレクトリリストサーブレットを自宅に持ち帰ります。 – BalusC

1

は、

デフォルト値は以下の通りであったウェルカムファイルリストを編集してみてくださいそれらを削除すると完全に動作するはずです

+0

ありがとう、それなしで私のために働かなかった。 – masterxilo

3

Tomcat 6を使用している場合(サーブレット2.5の仕様を実装しています)または新しいバージョンの場合、ディレクトリ一覧を表示するためにCATALINA_HOME/conf /ディレクトリのweb.xmlを変更する必要はありません。代わりに、Webアプリケーションのweb.xmlファイルをWEB-INFの下で変更する必要があります。

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

を追加する必要がありますあなたのサーブレットの外のファイルのためのベースのファイルブラウザでは、this answerで述べたカスタムwebappを使うことができます。

関連する問題