Je déploie une application web sur deux conteneurs différents (Tomcat et Jetty), mais leurs servlets par défaut pour servir le contenu statique ont une manière différente de traiter la structure d'URL que je veux utiliser ( détails ).
Je cherche donc à inclure un petit servlet dans la webapp pour servir son propre contenu statique (images, CSS, etc.). La servlet doit avoir les propriétés suivantes :
- Pas de dépendances externes
- Simple et fiable
- Soutien aux
If-Modified-Since
(c.-à-d. l'en-tête personnaliségetLastModified
méthode) - (Facultatif) support pour l'encodage gzip, etags,...
Un tel servlet est-il disponible quelque part ? Le plus proche que je puisse trouver est exemple 4-10 du livre sur les servlets.
Mise à jour : La structure URL que je veux utiliser - au cas où vous vous poseriez la question - est simplement :
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
Ainsi, toutes les requêtes doivent être transmises à la servlet principale, à moins qu'elles ne soient destinées à l'application static
path. Le problème est que le servlet par défaut de Tomcat ne prend pas en compte le ServletPath (il cherche donc les fichiers statiques dans le dossier principal), alors que Jetty le fait (il cherche donc dans le répertoire static
dossier).
0 votes
Pourriez-vous préciser la "structure URL" que vous souhaitez utiliser ? Créer la vôtre, sur la base de l'exemple 4-10, semble être un effort trivial. Je l'ai fait moi-même de nombreuses fois...
0 votes
J'ai modifié ma question pour élaborer la structure de l'URL. Et oui, j'ai fini par créer ma propre servlet. Voir ma réponse ci-dessous.
1 votes
Pourquoi n'utilisez-vous pas le serveur web pour le contenu statique ?
4 votes
@Stephen : parce qu'il n'y a pas toujours un Apache en face du Tomcat/Jetty. Et pour éviter les tracas d'une configuration séparée. Mais vous avez raison, je pourrais envisager cette option.
0 votes
I just can't understand, why you didn't use mapping like this <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> to serve static content