Je développe une application web en utilisant Struts 2.1.2 et Hibernate 3.2.6.GA. J'ai une entité, User
, que j'ai mappée à une table USERS
dans la base de données en utilisant Hibernate. Je veux avoir une image associée à cette entité, que je prévois de stocker comme BLOB
dans la base de données. Je veux également afficher l'image sur une page Web avec d'autres attributs du User
.Comment puis-je diffuser une image sur le navigateur en utilisant Struts 2 + Hibernate 3?
La solution que je pouvais penser était d'avoir une table IMAGES(ID, IMAGE)
où IMAGE
est une colonne BLOB
. USERS
aura une colonne FK
appelée IMAGEID
, qui pointe vers la table IMAGES
. Je vais ensuite mapper une propriété sur l'entité User
, appelée imageId
mappée à cette IMAGEID
en tant que Long. Lors du rendu de la page avec une JSP, j'ajouterais des images comme <img src="images.action?id=1"/>
etc., et j'ai une action qui lit l'image et transmet le contenu au navigateur, avec les en-têtes définis pour mettre l'image en cache pendant une longue période.
Est-ce que cela fonctionnera? Existe-t-il une meilleure approche pour le rendu des images stockées dans une base de données? Est-ce que le stockage de telles images dans le DB est la bonne approche?
J'ai implémenté ceci en utilisant ce mécanisme (en utilisant une action ServletResponseAware au lieu d'une servlet). Je ne considère pas cela comme une réponse acceptée en espérant que d'autres mécanismes pourraient être mis en place. J'ai upvoted ceci, de sorte que c'est la réponse la plus connue à ce jour. –