Question

J'utilisais les éléments suivants dans le fichier web.xml pour configurer un servlet afin de générer dynamiquement des fichiers PDF.

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

Maintenant, je dois aussi servir quelques fichiers PDF statiques. Quel est le moyen le plus propre de configurer cela? Je ne sers actuellement que quatre ou cinq fichiers dynamiques, et ne vous attendez pas à ce que cela augmente, si cela peut vous aider.

Était-ce utile?

La solution

Vous n'avez pas du tout besoin de configurer des fichiers statiques. si Tomcat peut trouver un fichier, il le servira. La configuration n’est nécessaire que si vous souhaitez que Tomcat appelle du code.

Autres conseils

Il s'agit d'un problème étonnamment irritant pour lequel je n'ai pas encore trouvé de solution satisfaisante.

Comme vous le savez sans doute, le problème à la base de ce problème est que votre fichier web.xml est configuré pour envoyer toutes les demandes de * .pdf à votre servlet Spring. La chose évidente à essayer est que le servlet reconnaisse les demandes correspondant à des PDF statiques, puis transfère la demande en interne vers ce fichier statique. Toutefois, comme le fichier se terminera probablement par .pdf, la demande reviendra simplement dans le servlet. encore une fois, ad nauseum.

La seule solution de contournement que j'ai essayée consiste à demander au servlet de lire manuellement le PDF statique dans le contexte de servlet (à l'aide de ServletContext.getResource () ) et de l'écrire dans la sortie du servlet. flux, en veillant à définir les différents en-têtes correctement. Ce n'est pas très gentil.

La seule option à laquelle je peux penser est de rendre le motif d'url dans web.xml un peu moins large, afin que seules les demandes PDF dynamiques soient routées vers le servlet et les demandes de fichiers PDF statiques sont acheminées vers le fichier, mais cela nécessiterait une sorte de convention de dénomination pour vos documents, ce qui pourrait ne pas être une option.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top