Сопоставление статических и динамических файлов в Tomcat / Spring?

StackOverflow https://stackoverflow.com/questions/1601442

  •  05-07-2019
  •  | 
  •  

Вопрос

Я использовал следующее в web.xml для настройки сервлета для динамической генерации PDF-файлов.

<servlet-mapping>
    <servlet-name>pdfServlet</servlet-name>
    <url-pattern>*.pdf</url-pattern>
</servlet-mapping>

Теперь я также должен обслуживать несколько статических файлов PDF. Какой самый чистый способ настроить это? В настоящее время я работаю только с четырьмя или пятью динамическими файлами, и не ожидаю, что это увеличится, если это вообще поможет.

Это было полезно?

Решение

Вам вообще не нужно настраивать статические файлы; если Tomcat сможет найти файл, он будет его обслуживать. Конфигурация необходима только тогда, когда вы хотите, чтобы Tomcat вызывал некоторый код.

Другие советы

Это удивительно раздражающая проблема, которую я пока не нашел удовлетворительного решения.

Основой проблемы, как я уверен, вы знаете, является то, что ваш web.xml настроен на отправку всех запросов на * .pdf вашему сервлету Spring. Очевидная вещь, которую нужно попробовать, - это чтобы сервлет распознал, какие запросы относятся к статическим PDF-файлам, и затем перенаправил запрос внутренне в этот статический файл, но, поскольку файл, скорее всего, будет заканчиваться на .pdf, запрос будет просто возвращаться через сервлет. снова до тошноты.

Единственный обходной путь для этого, который я попробовал, - это заставить сервлет вручную прочитать статический PDF из контекста сервлета (используя ServletContext.getResource () ) и записать его в выходной файл сервлета. поток, убедившись, что правильно установить различные заголовки. Это не очень приятно.

Единственный вариант, который я могу придумать, - это сделать url-pattern в web.xml немного менее широким, чтобы только динамические запросы PDF направлялись на сервлет, и запросы на статические PDF-файлы направляются в файл, но для этого потребуется какое-то соглашение об именах для ваших документов, что может оказаться невозможным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top