Frage

Ich war mit dem folgend in web.xml ein Servlet zu konfigurieren, um dynamisch PDF-Dateien zu erzeugen.

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

Nun, ich habe auch ein paar statische PDF-Dateien dienen. Was ist der sauberste Weg, das zu konfigurieren? Ich bin derzeit nur vier oder fünf dynamische Dateien dienen, und nicht erwarten, dass zu erhöhen, wenn das überhaupt hilft.

War es hilfreich?

Lösung

Sie müssen keine statische Dateien überhaupt konfigurieren; wenn Tomcat eine Datei finden kann, wird es dienen. Die Konfiguration ist nur erforderlich, wenn Sie Tomcat wollen einige Code aufzurufen.

Andere Tipps

Dies ist ein überraschend irritierendes Problem, das ich habe noch eine befriedigende Lösung. Finden

Die Basis des Problems, wie ich bin sicher, Sie sind sich bewusst, dass Ihre web.xml konfiguriert ist, alle Anfragen für * .pdf auf Ihre Spring-Servlet zu senden. Die offensichtliche Sache zu versuchen, ist für das Servlet ist für statische PDF-Dateien, welche Anfragen zu erkennen und dann die Anfrage weiterleiten intern auf diese statische Datei, sondern weil die Datei wahrscheinlich mit .pdf enden wird, wird die Anforderung nur durch das Servlet zurück wieder, bis zum Überdruss.

Die einzige Lösung für diesen, dass ich versucht habe, ist das Servlet manuell das statische PDF aus dem Servlet-Kontext haben las (mit ServletContext.getResource()), und schreiben Sie es an den Servlet Ausgabestrom, um sicherzustellen, um die verschiedenen Header richtig einzustellen. Es ist nicht sehr schön.

Die einzige Option, die ich denken kann, ist die url-pattern in web.xml etwas weniger breit zu machen, so dass nur dynamische PDF-Anfragen an das Servlet weitergeleitet werden, und Anforderungen für statische PDF-Dateien auf die Datei erhalten geroutet, aber das würde einige erfordern Art Konvention für Ihre Dokumente zu benennen, die keine Option sein kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top