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 :

[Servlet][Deb]envoyer image gif sur le flux http


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut [Resolu][Servlet][Deb]envoyer image gif sur le flux http
    Bonjour,
    je rencontre des problèmes pour afficher tout simplement une image. A la suite d'une requete sql, je récupère le binary stream de mon image puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    				InputStream in = rs.getBinaryStream("Sequence");
    				byte b[] = new byte[1024*4];
    				int i;
    				while((i = in.read(b)) != -1) {
    					try{
    						out.write(b,0,i);
    					}catch(IOException ioe) {
    						ioe.printStackTrace();
    					}
    				}
    j'ai l'impression d'avoir un problème au niveau du write...
    Quelqu'un a-t-il eu déjà des problèmes similaires??

    Je ne vois vraiment pas ce qui cloche.... J'ai bien fait attention que ma http servlet réponse soit de type "image/gif", mais à l'exécution, mes stack trace bouclent, et au niveau de l'affichage, rien....
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

  2. #2
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Tu as essayé avec des BufferedReader et BufferedWriter ?

    Et je ne vois pas l'intéret de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((i = in.read(b)) != -1)
    ...plutôt que ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i = in.read(b); i != -1; i = in.read(b))
    qui est plus clair.
    De plus, je ne sais pas si une affectation en Java renvoie la valeur affectée ... je dirai même que ça ne marche pas - 'faut pas confondre avec du C !

    [édité par kimael]
    si tu dis que ça marche...
    [/édité]
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    l'intéret est que c'est plus court, plus propre, et si si, c'est du java, et ça marche!!!

    en fait, je vois que ça commence à écrire bien (il fait 7 boucles sans problème), et puis pouf il déglingue....
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

  4. #4
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par ptitBoutchou
    l'intéret est que c'est plus court, plus propre
    Plus court à écrire, oui.
    Plus propre, je ne vois pas en quoi.
    Et en tout cas, ça n'accélère en rien le programme !

    Sinon, tu as essayé les InputStreamReader et autres OutputStreamWriter que tu encapsules dans des BufferedReader et BufferedWriter ?
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    euh...nan

    mais je vais voir ce que ça donne avec les BufferedImage[/quote]
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

  6. #6
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par ptitBoutchou
    mais je vais voir ce que ça donne avec les BufferedImage
    Euh... oui, c'est ce que j'utilise.
    Pardon de ne pas te l'avoir dit avant... je croyais que tu faisais du transfert par octet uniquement

    Regarde aussi du côté de ImageIcon
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    halalalala.... alors les 2 façons marchent (la mienne de départ et BufferedImage).... et le problème vient du fait qu'une erreur se produit lorsque j'écris dans le doGet(...):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponse.setContentType("image/gif");
    puis, un peu plus loin,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponse.setContentType("text/html");
    Si je fais ça, c'était pour pouvoir écrire et afficher des images en meme temps.... comment je fais moi maintenant??
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

  8. #8
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Attends...
    Les images, c'est un truc à part : c'est le navigateur, qui va les chercher 1 par 1 à chaque fois qu'il tombe sur une balise < img /> !

    Donc tu dois mettre l'adresse d'une jsp à part (qui renvoie toujours une image) dans ta balise < img />.
    En passant des paramètres désignant quelle image tu veux, tu dois pouvoir t'en sortir

    Ou alors, j'ai pas compris ce que tu veux faire.
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    euh....argh... ça marche pas finalement comme je voudrais que ça marche...

    bon essayons d'etre claire :

    1/ je n'utilise pas de JSP, je gère tout dans ma http servlet, et plus particulièrement dans la méthode doGet(...). c'est là que je mets le code pour passer l'image

    2/ efffectivement, ça ne marche pas quand je veux afficher plusieurs images à la suite

    3/ tu me conseilles donc de rester en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reponse.setContentType("text/html");
    et d'insérer les balises <img>, et en ce qui concerne la src, au lieu de mettre une JSP, je met un nom de servlet?
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

  10. #10
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par ptitBoutchou
    insérer les balises <img>, et en ce qui concerne la src, au lieu de mettre une JSP, je met un nom de servlet?
    Voilà : ta http-servlet renvoie un content type="image/gif".
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    ok... donc j'ai fait une servlet image qui permet d'afficher une image... seulement j'ai besoin du binary stream... pour cela, je me suis inspirée de ce poste:

    http://www.developpez.net/forums/viewtopic.php?t=177859

    pour pouvoir faire des échanges de paramètres...

    Ainsi dans la servlet qui va appeler image, je fais avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    				InputStream in = rs.getBinaryStream("Sequence");
    				requete.setAttribute("img",in);
    et dans image, je récupère par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    			InputStream in = (InputStream) requete.getAttribute("img");
    mais mon objet in reste null.... ne faut-il pas faire comme ça?

    bon je vaus ptète éditer le sujet en précisant que je débute dans les servlets!!
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

  12. #12
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Je ne crois pas que ce soit un problème de servlets : il suffit que ta servlet renvoie une image en http.

    Lis de la doc là-dessus, je ne sais plus exactement comment on fait.

    En tout cas, stocker in c'est pas une bonne idée !
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    mais comment je fais si je stocke pas in?

    je veux dire par là que j'ai fait une servlet image qui affichera n'importe quel image, et donc il faut que je récupère en paramètre le nom ou le binaire de l'image à afficher, non?
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    finalement, en passant par une session, l'objet InputStream n'est plus nul :

    je suis une servlet qui vient d'obtenir par requete un binary stream, je le met en attribut pour pouvoir visualiser l'image correspondante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    				InputStream in = rs.getBinaryStream("Sequence");
    				ServletContext sc = this.getServletContext();
    				sc.setAttribute("img",in);
    				System.out.println("Je veux visualiser : "+sc.getAttribute("img"));
    je suis la servlet image qui va permettre de résoudre ton désir existentiel (je pars en délire, mais je suis entrain de me fatiguer....)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    			ServletContext context = this.getServletContext();
    			InputStream in = (InputStream) context.getAttribute("img");
    			System.out.println("Je m'en vais te visualiser "+in);
    j'obtiens à l'affichage :
    Je veux visualiser
    [...]BinaryStream@1565e9d
    Je m'en vais te visualiser
    [...]BinaryStream@1565e9d

    donc maintenant, que effectivement l'objet n'est plus nul, cela ne devrait plus poser de problème ....

    hélas... il ose me sortir encore une java.lang.NullPointerException
    at [...]BinaryStream.read(DataChunkResultImpl.java:84)
    une suggestion?
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

  15. #15
    Membre habitué Avatar de Kimael
    Inscrit en
    Avril 2002
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 151
    Points : 159
    Points
    159
    Par défaut
    Franchement, je ne vois pas bien la globalité du problème.
    Essaye de décrire exactement dans quel contexte tu bosses.

    Sinon, là, je ne sais plus...
    Membre du comité "Mort aux cons ! ARG..."
    Plus on essaye, et plus on a de chances de réussir... proverbe Shadok.
    Pensez au tag [Résolu], merci.

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    non, bon finalement ça marche, c'est un problème concernant les images à afficher que j'ai rencontré...

    bon mais par contre, une ptite précision : c'est bof de passer par le Servlet Context pour faire passer des paramèters (c'est meme nul), mais je savais pas qu'on pouvait passer des paramètres d'une servlet à l'autre en faisant tout betement "?"....

    vala
    il y a des jours où j'aimerais etre vous pour pouvoir m'aimer sans que cela ne passe pour du narcissisme...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/12/2014, 01h19
  2. [WD-2003] une image gif sur word
    Par Imad_ing dans le forum Word
    Réponses: 12
    Dernier message: 09/07/2009, 10h57
  3. Réponses: 12
    Dernier message: 09/06/2006, 07h27
  4. (EXCEL) Effacer des images gif insérées sur une feuille ?
    Par romo3 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/08/2005, 21h31
  5. [Servlet] [Image] Dessiner sur une image
    Par gaia_dev dans le forum 2D
    Réponses: 5
    Dernier message: 01/09/2004, 17h11

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