web-dev-qa-db-fra.com

Comment puis-je lister tous les fichiers du dossier sur tomcat?

J'ai un dossier contenant de nombreux documents Excel sur Tomcat et je veux que ces fichiers soient disponibles dès que je suis allé à l'URL de ce dossier dans le navigateur (par exemple, http; // localhost: 8080/myfolder).

au moment où j'essaie d'accéder à un dossier, je reçois une erreur 404. par si j'essaie d'accéder à un fichier qui se trouve dans ce dossier, cela fonctionne.

31
code511788465541441

La DefaultServlet de Tomcat est configurée par défaut pour ne pas afficher les listes de répertoires. Vous devez ouvrir le propre fichier /conf/web.xml de Tomcat (dans le dossier d'installation de Tomcat), rechercher l'entrée <servlet> de la variable DefaultServlet, puis modifier son paramètre d'initialisation listings de

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

Gardez à l'esprit que cela affecte les dossiers all de votre application Web. Si vous souhaitez l'activer uniquement pour un dossier individuel, vous devez écrire vous-même un code Servlet qui effectue le travail à l'aide de l'API Java.io.File du côté servlet afin de collecter les fichiers et une partie du code HTML/CSS du côté JSP présentez-le d'une manière soignée.

51
BalusC

Vous pouvez également l'activer à partir d'un modèle d'URL donné… .. Il suffit d'ajouter le servlet et le mappage de servlets à votre application 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>

Dans cet exemple, les répertoires ci-dessous "/ ws-definitions /" seront écoutés.

19
swisswheel

Voici une documentation expliquant comment faire cela.

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

L'idée de base est de changer la valeur du paramètre listings en true dans le web.xml principal de 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>

Mais ce qui précède exposera tous les répertoires. Pour avoir un contrôle précis, suivez les étapes expliquées ici:

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

4
adarshr

Si vous utilisez Tomcat 6 (qui implémente la spécification Servlet 2.5) ou une version plus récente, vous n'avez pas besoin de modifier le fichier web.xml du répertoire CATALINA_HOME/conf/pour afficher les listes de répertoires. Au lieu de cela, vous devez modifier le fichier web.xml de l'application Web sous WEB-INF.

Comme Adarshr l’a mentionné, c’est ce que vous devez ajouter au fichier 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>

Vous devez également ajouter les éléments suivants

<servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>
3
ezzadeen

Voici un simple servlet qui pourrait être un début pour une approche totalement personnalisée.

2
trashgod

Si la modification de la valeur du paramètre listing ne fonctionne pas, essayez de modifier la liste de fichiers de bienvenue.

les valeurs par défaut étaient les suivantes:

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

éditez-le comme suit:

<welcome-file-list>
    <welcome-file></welcome-file>
    <welcome-file></welcome-file>
    <welcome-file></welcome-file>
</welcome-file-list>

en les retirant cela devrait fonctionner parfaitement

2
Rahul Roy

Si vous essayez simplement d'implémenter un navigateur Web pour les fichiers en dehors de votre servlet, vous pouvez utiliser l'application Web personnalisée mentionnée dans cette réponse .

0
kostmo