Bonjour,

Initialement, j'ai posté ce message dans la rubrique "Struts 2", puisque c'est le framework que j'utilise. Mais le problème est commun à toute appli Java web, et je n'ai toujours pas de solution.

Actuellement, pour récupérer les images dans mes pages JSP, j'utilise la balise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<img src="<s:property value="picUrl"/>"/>
où picUrl contient l'URL vers la servlet qui retourne une image.

Or, avec ce système, s'il faut charger 50 images dans la page web, il y a 50 appels vers cette servlet, et 50 connexions à la base. Pas satisfaisant.

Un utilisateur de ce forum m'a conseillé de mettre toutes mes images dans une ArrayList (sous forme de byte[]), via la servlet qui précède la page en question.

Mon problème actuel est donc de savoir comment faire afficher dans la page JSP ces images que j'ai sous forme d'ArrayList<byte[]>.

J'imagine qu'il faut excécuter un <iterator> (boucle) dessus. Jusques là tout va bien. Mais à l'intérieur de cet itérator, je ne sais que mettre pour faire afficher l'image. Je ne vois pas comment utiliser la balise <img src="..."/>, puisque la source n'est plus une URL, mais l'ArrayList déjà accessible.

-------------
2ème épisode
-------------

Voici mon idée actuelle :

- Dans l'action (servlet) qui précède la page, récupérer toutes les images dans l'ArrayList<byte[]>
- Mettre cette ArrayList comme objet de session (mais peut-on mettre ce type d'objet en session ?)
- Ensuite, dans la JSP, faire pointer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<img src="<s:property value="picUrl"/>"/>
vers une classe (servlet) dont le but ne serait pas de récupérer l'image voulue dans la BD, mais dans cet objet de session.

On évite ainsi 50 connexions à la BD. On continue, certes, de lancer 50 requêtes parallèles vers Tomcat. Mais c'est déjà moins génant.

Pensez-vous que ça peut marcher ?

Mes doutes concernent aussi la taille (potentiellement élevée) de cet objet de session censé contenir plein d'images).

Sinon, quelle est la bonne manière de faire ?

merci
bob