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 :

tableau d'images affichées via une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 17
    Par défaut tableau d'images affichées via une servlet
    Bonjour,

    j'utilise une servlet pour afficher un tableau d'images, au niveau du code HTML voici ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <img src="/context/image.do?path=\Photo 001.jpg" />
    <img src="/context/image.do?path=\Photo 002.jpg" />
    <img src="/context/image.do?path=\Photo 003.jpg" />
    ...
    ma servlet se contente de lire l'attribut path et d'afficher l'image correspondante, ci-dessous le code (en gros) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    try {
     
     File filename = null;
     String path = imageForm.getPath();
     filename = new File(path);    
     response.setContentType("application/octet-stream");
     response.setHeader("Content-Disposition", "inline; 
     OutputStream fout = response.getOutputStream();
     ImageStream is = ImageStream.getInstance();
     is.write(fout, filename);    
     
    } catch (IOException e) {
     // gestion de lexception
    }
    Tout ceci marche SAUF que parfois, alors que le chemin est différent je vais avoir à l'affichage deux fois la même image. Je suppose qu'il y a un problème de synchronisme car cette servlet est appelée plusieurs fois très rapidement sur la même page mais je ne sais pas comment corriger cela.

    Pouvez-vous m'aider ?

  2. #2
    Membre averti
    Inscrit en
    Février 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 17
    Par défaut
    Vraiment personne n'a d'idée ?

    Comment puis-je faire pour que ma servlet soit "synchronisée", et ne soit pas appelée deux fois en même temps, car je pense que c'est ça le problème ...

    J'envoie deux requêtes avec des paramètres différents et pourtant en réponse j'ai deux fois la même réponse, en l'occurence, la même image affichée deux fois.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 63
    Par défaut
    Je ne connais pas ImageStream.
    C'est une classe à toi ?

    Sinon ça répond pas au problème, mais pourquoi ne pas directement appeler les images via leurs URL sans passer par une Servlet ?

  4. #4
    Membre averti
    Inscrit en
    Février 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 17
    Par défaut
    Salut,

    ImageStream est effectivement une classe à moi, j'ai oublié d'en détailler le contenu, voilà ce que fait le write :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      public synchronized void write(OutputStream fout, File filename) throws FileNotFoundException, IOException {
            BufferedOutputStream bout = new BufferedOutputStream(fout);
     
            byte[] bytes = new byte[512];
            FileInputStream fileInputStream = new FileInputStream(filename);
            int i;
            while ( (i = fileInputStream.read(bytes)) > 0) {   
                bout.write(bytes,0,i);
            }
            fileInputStream.close();
            bout.close();     
        }
    En gros ça écrit dans la sortie
    Si je mets ce bout de code directement dans ma servlet (ce qui serait mieux, je ne vois pas pourquoi j'ai créé cette classe elle ne sert à rien !!!) ça ne marche pas mieux.

    Pour ce qui est de ta question de mettre directement l'url, je ne le fais pas c'est un souhait, mon site est un site de photos, les photos ne sont pas placées au même endroit que l'appli, dans la servlet je fournis un chemin relatif, c'est l'application qui gère le chemin complet, comme ça l'adresse du stockage des photos sur mon serveur n'est pas affichée ...

    Le problème dont je parle ne survient pas quand j'attaque mon site à distance (web) mais uniquement quand je l'attaque depuis chez moi (je l'héberge chez moi).

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    A la louche, je dirais que ton problème vient justement de ta classe ImageStream.
    Le ImageStream.getInstance() fait penser à une instance unique (singleton) et de ce fait, comme les servlets sont multi-thread, ça va poser problème.
    Il faudrait déjà synchroniser ImageStream dans la servlet pour éviter que 2 thread ne s'écrasent mutuellement les références.
    Quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    ImageStream imageStream = ImageStream.getInstance();
    synchronized (imageStream)
    {
       ... le code 
    }
    ...
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème d'images affichées par une servlet
    Par Tasslekender dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 10/12/2009, 15h17
  2. Réponses: 1
    Dernier message: 28/08/2009, 02h45
  3. Afficher une image dynamique dans une servlet
    Par reg01 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 03/04/2008, 11h28
  4. [JAVA] Probleme de connexion a ACCESS via une Servlet.
    Par rider4ever dans le forum Access
    Réponses: 8
    Dernier message: 10/02/2006, 18h45
  5. [Servlet]pdf sur le disque, l'afficher avec une servlet
    Par canou94 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 08/12/2005, 15h11

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