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