Сопоставление статических и динамических файлов в Tomcat / Spring? - PullRequest
2 голосов
/ 21 октября 2009

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

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

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

Ответы [ 2 ]

3 голосов
/ 21 октября 2009

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

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

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

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

1 голос
/ 21 октября 2009

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

...