2010-04-23 3 views

Répondre

1

Il suffit de créer une servlet et, dans sa méthode doGet, de fournir un contenu d'image binaire (Content-Type: image/jpeg, ou gif).

Assurez-vous de définir les champs suivants dans HttpServletResponse:

  • ETag
  • Last-Modified
  • Content-Type
  • Content-Length

retrun Puis le binaire d'image en tant que corps de HttpServletResponse, écrivez-le directement dans un flux obtenu via HttpServletResponse.getOutputStream.

Vous pouvez transmettre un identifiant d'image à ce servlet en tant que paramètre d'URL, ce qui vous permet de diffuser différentes images via le même servlet. Vous pouvez même mettre en cache des images sur disque, mais comme vous disposez d'une servlet, vous pouvez configurer un répertoire temporaire sans mappage virtuel.

EDIT

vous pouvez réellement créer plusieurs correspondances virtuelles à cette servlet et dans la servlet méthode doGet examiner chemin du contexte et de servir l'image en fonction de ce nom de chemin de contexte.

+0

Merci, mais pour la connexion DB n'est probablement pas le meilleur moyen si je veux afficher plus de 1 fichiers? –

+0

@quilovnic: Je ne comprends pas votre problème avec la connexion DB. Si les performances db le permettent, servez les images directement à partir de la base de données, si vous pensez bénéficier de la mise en cache, puis mettez-les en cache dans le conteneur Servlet (répertoire temporaire sur le disque ou simplement dans la mémoire de l'application). Sachez simplement que lire/écrire sur le disque introduit son propre goulot d'étranglement d'E/S, et dans certains cas, votre application peut passer tout son temps à attendre que les E/S du disque se terminent. –

+0

Donc, vous pensez que la performance de la DB n'est pas affectée si j'ouvre un grand nombre de fichiers de DB? Comme vous le dites, je voudrais créer un cache. Mais si mes fichiers sont gros ...? –

Questions connexes