IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Mise à jour dynamique d'une image dans une JSP


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 99
    Points : 1
    Points
    1
    Par défaut Mise à jour dynamique d'une image dans une JSP
    Bonjour,

    Une petite question simple dont je ne connais pas la "good practice" (s'il y en a une).
    Par ex, sur une page web (JSP) j'ai une belle image qui s'affiche.
    Cette image est appelée coté client à travers un JS du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<%=request.getContextPath()%>/images/edit.png" />
    Ce code ci-dessus interroge le serveur (et plus précisément l'application tomcat) pour avoir l'image via l'URL.
    Or si un utilisateur désire via un formulaire d'upload mettre à jour cette image, dois-je écraser celle existante.
    Si oui (je suppose), ce qui m'ennuie c'est pour les déploiements : des fichiers dans la version déployée sont à conserver. Je ne pourrais plus me contenter de supprimer simplement la version déployée et déployer un nouveau .war.
    Connaitriez-vous une bonne manière pour mettre à jour dynamiquement cette image ?

    Merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    D'après ce que je comprends de ton besoin, tu vas avoir des versions concurrentes de l'image, donc, tu ne peux pas simplement écraser l'image, à moins que pour un déploiement donné, la question ne se pose pas.

    Peux-tu préciser ce que tu cherches à faire ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 99
    Points : 1
    Points
    1
    Par défaut
    Oui dans l'absolu il y aurait concurrence si je procède ainsi.
    Mais ça reste infime et au pire, l'upload planterait.
    La concurrence au niveau lecture par le serveur et écriture par le process d'upload est vraiment petite.....au pire 1/1000000ème fois l'upload plantera, c'est pas grave, le client n'a pas ce niveau d'exigence.
    Ce qui m'embête le plus c'est pour gérer les déploiements.

    Ce que je cherche à faire ?

    => Je veux mettre à jour une image côté serveur à l'insu du client qui désire mettre à jour celle-ci (via un formulaire d'upload) sans "détruire" mes déploiement comme expliqué.
    Je cherche une méthode "good practice" si c'est possible.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Il faudrait placer tes images ailleurs que dans la structure arborescente sous /WebContent (et donc accessible directement par l'url).
    Du coup, ça t'oblige à passer par un filtre ou une servlet pour renvoyer le flux binaire de l'image. Ce n'est pas bien compliqué à faire.
    Ça te permettrait de renvoyer soit l'image par défaut, soit l'image modifiée si elle existe.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 99
    Points : 1
    Points
    1
    Par défaut
    Bien vu pour le coup de la servlet.
    Suffit juste de l'intégrer dans mon portail (liferay).
    Je pense (j'espère) que cela ne posera pas problème !

    Merci beaucoup

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 99
    Points : 1
    Points
    1
    Par défaut
    Je continue sur le sujet....
    En fait l'appel est dans un code javascript.
    Bref, du html du style par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="../images/monimage.png"/>
    J'ai bien compris que cet emplacement est relatif (au répertoire WEB-INF il me semble) à la racine de l'application, le reste (autre que les chemins de l'appli) n'est pas accessible par un client bien sûr.


    Maintenant, il faudrait alors que l'url de "src" soit une servlet (ou portlet dans mon cas qui réceptionne la requête) du style (avec liferay)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <portlet:resourceURL id='getImage'></portlet:resourceURL>
    NB : ce code JSP permet de générer une url valide pour liferay (désolé, c du pur liferay) par ex. dans mon cas : http://localhost:9090/web/guest/...?id=geImage

    En fait ma question est, que dois-je retourner côté serveur ? Le flux binaire de l'image suffit ? Ce ne serait plus src="une url http" mais directement le flux binaire issue de l'image c:\les_images_du_disque_dur\monimage.jpg

    EDIT : quelques éléments de réponse : http://stackoverflow.com/questions/1...et-to-jsp-page

    Si je passe par une url liferay, je serais "mono requête" et alors comment retourner l'image (flux binaire ?)
    Si je passe par une servlet, j'ai tout un contexte spring et liferay à charger (faire une custom servlet)
    C'est peut être moins simple que ce que je le pensais...pour une chose a priori "simple"

    Merci

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zomurn Voir le message
    En fait ma question est, que dois-je retourner côté serveur ? Le flux binaire de l'image suffit ?
    Oui, juste le flux binaire

    Il faut comprendre comment fonctionne une balise <img>. Elle utilise l'url pour récupérer le flux. Si tu mets un filtre ou une servlet, elle doit retourner la même chose.
    Si tu devais faire varier l'url, ça se ferait par du scriptlet ou via la jstl
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. Une image dans une image (image map?)
    Par oklama dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 14h13
  3. Mettre une Image dans une Image
    Par shadowhocine dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 19/12/2006, 18h40
  4. Réponses: 3
    Dernier message: 30/10/2006, 11h21
  5. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo