Подтвердить что ты не робот

Как я могу перечислить все файлы в папке на tomcat?

У меня есть папка со многими документами excel в нем на tomcat, и я хочу, чтобы эти файлы были доступны, когда я получил URL-адрес этой папки в браузере (например, http;//localhost: 8080/myfolder)

в тот момент, когда я пытаюсь получить доступ к папке, я получаю ошибку 404. если я попытаюсь получить доступ к файлу, находящемуся в этой папке, он работает.

4b9b3361

Ответ 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, упомянутый в этом ответе.