2009-10-21 2 views
2

Я использовал следующее в web.xml для настройки сервлета для динамического создания PDF-файлов.Сопоставление как статических, так и динамических файлов в Tomcat/Spring?

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

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

ответ

1

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

+0

Я ранее имел Tomcat, вызывая код во всех запросах PDF; все они были динамически построены iText. Теперь мне нужно, чтобы Tomcat также передавал статические файлы; не будет ли это поймано сервлет-картографированием? –

+0

Ах, вы имеете в виду статические PDF-файлы (т. Е. Файлы, которые * соответствуют * правилу вашего URL-адреса). Хорошо, не могу вам помочь :) –

+0

Yup. Да, похоже, единственное решение - индивидуально отобразить все динамические явно, без подстановочных знаков. –

3

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

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

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

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

+0

Я могу дать соглашение об именовании; ручное обслуживание статического файла кажется менее чистым. В основном мы переходим от использования iText к использованию XDP (XML + PDF) для создания динамических документов, но для XDP требуется, чтобы статический шаблон PDF был подан. –