Как я могу перечислить все файлы в папке на tomcat?
У меня есть папка со многими документами excel в нем на tomcat, и я хочу, чтобы эти файлы были доступны, когда я получил URL-адрес этой папки в браузере (например, http;//localhost: 8080/myfolder)
в тот момент, когда я пытаюсь получить доступ к папке, я получаю ошибку 404. если я попытаюсь получить доступ к файлу, находящемуся в этой папке, он работает.
Ответы
Ответ 1
DefaultServlet
Tomcat по умолчанию настроен так, чтобы не показывать списки каталогов. Вам нужно открыть собственный файл /conf/web.xml
Tomcat (посмотрите в папке установки Tomcat), найдите запись <servlet>
DefaultServlet
, а затем измените ее параметр инициализации 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>
Имейте в виду, что это влияет на все папки вашего веб-сервера. Если вы хотите включить это только для отдельной папки, вам нужно написать код Servlet
, который выполняет задание с помощью API java.io.File
на стороне сервлета, чтобы собрать файлы и некоторую группу HTML/CSS в стороне JSP, чтобы представить его в аккуратном виде.
Ответ 2
Вы также можете включить его, начиная с заданного шаблона URL.
Просто добавьте сервлет и сервлет-сопоставление в ваше приложение 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-определения/".
Ответ 3
Ниже приведена документация, объясняющая, как это сделать.
http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html
Основная идея - изменить значение параметра listings
на true
в главном web.xml
файла 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>
Но вышесказанное выведет все каталоги. Чтобы иметь прекрасный контроль, выполните описанные здесь шаги:
http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html#dir
Ответ 4
Если вы используете Tomcat 6 (который реализует спецификацию Servlet 2.5) или более новую версию, вам не нужно менять web.xml в каталоге CATALINA_HOME/conf/для отображения списков каталогов. Вместо этого вы должны изменить собственный файл 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>
Ответ 5
Вот простой сервлет, который может стать началом для полностью настраиваемого подхода.
Ответ 6
Если изменение значения параметра списка не работает, попробуйте отредактировать список файлов приветствия
значения по умолчанию:
<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>
при их удалении он должен отлично работать
Ответ 7
Если вы просто пытаетесь внедрить веб-браузер файлов для файлов вне вашего сервлета, вы можете использовать пользовательский webapp, упомянутый в этом ответе.