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.
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.
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.
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
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>
Voici un simple servlet qui pourrait être un début pour une approche totalement personnalisée.
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
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 .