9
votes

Servir du contenu gzippé avec des servlets Java

Je me demandais s'il y avait un facile em> moyen de servir du contenu gzippé avec des servlets Java. J'ai déjà l'application et que les modifications nécessaires devraient être trop lourdes.

J'ai accès à l'objet de réponse juste à la fin de la méthode Dopost / Doket, donc je recherche quelque chose comme p>

response.setGzip(true);


0 commentaires

7 Réponses :


3
votes

Regardez la classe GzipOutPutStream. Quelque chose comme ceci: xxx

puis utilisez l'écrivain comme vous le faites habituellement.


1 commentaires

Voir la solution de Jonathan Feinberg :)



4
votes

Selon votre conteneur, le conteneur le fera probablement probablement pour vous. Cela peut le faire automatiquement ou vous devrez peut-être le configurer manuellement pour le faire pour vous. L'avantage de cette méthode est le changement de code zéro. Et, encore une fois, en fonction du conteneur, vous pouvez activer / désactiver / désactiver la compression en fonction de l'emplacement de la demande ou du navigateur source.

Pour Tomcat, consultez l'attribut de compression sur les pages de configuration http ( V5.5 , v6.0 ).


0 commentaires

1
votes

Si vous voulez vraiment, vous ne voulez vraiment pas vouloir avec le code Java, vous pouvez également envisager d'accrocher un serveur Apache devant votre conteneur de servlet.

Si vous avez beaucoup de contenu statique, cela pourrait réellement améliorer les performances pour vous, car l'Apache sera un peu plus rapide pour les pages statiques que tout conteneur de servlet. Vous devez donc le configurer pour déléguer uniquement des demandes de servlet à votre conteneur de servlet sur localhost.

Apache a une option intégrée pratique pour la sortie de compression. Je ne me souviens pas comment les mettre, mais c'est facile et polyvalent. Il négocie avec des navigateurs sur ce qu'ils peuvent gérer, etc. En cas de doute, Apache sera généralement plus averti et à jour sur des méthodes de compression que tout conteneur Java.


0 commentaires

3
votes

4 commentaires

J'ai vu des filtres de servlets aussi pour le faire? Troisième voie? Qui devrait être préféré?


@ User01: Les filtres de servlet font cette 2e façon (de manière réutilisable générique sans la nécessité de la logique de Copypaste sur tous les servlets). Omniface a un: showcase.omnifaces.org/filters/gziPResponsefilter


Merci pour le commentaire rapide! Donc, 1er devrait être un moyen préféré d'activer GZIP pour toutes les ressources de l'application Web?


@ user01: Si possible, oui, c'est généralement préféré. Mais un filtre offre une configuration / configuration à grains plus fine du côté webapp sur.



1
votes

Si vous êtes sur Tomcat, le connecteur peut faire de la compression pour vous. Ceci est ma configuration, xxx

si vous exécutez Apache httpd devant Tomcat, vous devez utiliser mod_gzip, qui fait un travail bien meilleur.


0 commentaires

1
votes

Je voulais juste vous faire savoir ce que j'ai terminé.

J'ai fait une enveloppe de la classe de demande qui ressemble à ceci: xxx

puis sur mon < Code> Base , qui est fondamentalement un tempplateMethod pour d'autres "actions" Je enveloppe la réponse comme ceci: xxx

Je pense que c'est assez propre. Si vous trouvez quelque chose qui peut être amélioré, merci de me le faire savoir. Merci tout le monde pour les réponses!


1 commentaires

Cela n'enlève pas la partie la plus importante, à savoir la sortie.



2
votes

C'est ce que j'ai utilisé tout en apprenant sur des servlets. Peut-être pas utilement, mais travailler !!! Code ci-dessous dans Classe publique Gzipencodingservlet étend httpServlet {...} xxx


0 commentaires