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

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

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

Ответы [ 7 ]

52 голосов
/ 15 августа 2011

Tomcat DefaultServlet по умолчанию настроен так, чтобы не отображать списки каталогов. Вам необходимо открыть собственный файл /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 самостоятельно, который выполняет работу с помощью java.io.File API на стороне сервлета для сбора файлов и некоторой связки HTML / CSS в сторону JSP, чтобы представить его аккуратно.

20 голосов
/ 02 июля 2013

Вы также можете включить его, начиная с заданного шаблона 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-definitions /".

4 голосов
/ 15 августа 2011

Вот некоторая документация, объясняющая, как это сделать.

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

Основная идея - изменить значение параметра listings на true в основном web.xmlof 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

3 голосов
/ 02 сентября 2013

Если вы используете Tomcat 6 (который реализует спецификацию Servlet 2.5) или более новую версию, вам не нужно изменять файл web.xml в каталоге CATALINA_HOME / conf / для отображения списков каталогов.Вместо этого вам следует изменить собственный файл web.xml веб-приложения в разделе WEB-INF.

Как уже упоминал Адаршр, это то, что вам нужно добавить в файл 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>
2 голосов
/ 29 июля 2013

Если изменение значения параметра листингов не работает, попробуйте изменить список файлов приветствия

значениями по умолчанию были следующие:

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

при их удалении должно работать отлично

2 голосов
/ 15 августа 2011

Вот простой сервлет , который может быть началом совершенно индивидуального подхода.

0 голосов
/ 09 февраля 2014

Если вы просто пытаетесь реализовать веб-браузер для файлов за пределами вашего сервлета, вы можете использовать пользовательское веб-приложение, указанное в в этом ответе .

...