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

JSF Java Discussion :

Afficher une image depuis une BDD dans une page JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    etudient
    Inscrit en
    Août 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : etudient

    Informations forums :
    Inscription : Août 2014
    Messages : 9
    Par défaut Afficher une image depuis une BDD dans une page JSF
    Bonjour à tous,
    j'ai une application jee7 avec jpa et jsf comme framework, netbeans comme IDE et Glassfish comme serveur d'application, j'ai une table dans ma BDD (derby) qui s'appelle Événement id, titre et image comme attributs je veux afficher les détailles d'un événement quelqu'un peut m'aider comment je peux récupérer l'image de la BDD et l'afficher dans la page JSF.
    merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    En gros:

    1) définir une servlet qui sera chargée du rendu de l'image
    2) dans le doGet de la servlet, récupérer l'id de l'image à afficher (via paramètre get)
    3) setter un content-type correspondant au type d'image dans la réponse
    4) en utilisant ton dao jpa, récupérer la données de l'image
    5) écrire ces données dans la réponse

    ça, ça permet d'afficher une image

    ensuite, dans les templates d'affichage (html probablement), tu mets une référence à la servlet dans la balise img: <img src="/myservlet?id=1234" alt="" />

  3. #3
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Un petit exemple de Servlet qui fait le boulot.

    En reprenant le code de @Pill_S <img src="/myservlet?id=1234" alt="" />.

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public void doGet( HttpServletRequest request, HttpServletResponse response )
    			 throws ServletException
    {
    	String fileName = request.getParameter( "id" );
     
    	InputStream is = getMyFileInputStream( fileName ); // Ici à toi de voir comment tu peux récupérer un InputStream à partir de ta base de donnée.
    	OutputStream os = null;
     
    	try
    	{
    		os = response.getOutputStream();
    		response.setContentType( MimeType.getMimeType( fileName ) ); // Ici c'est une classe perso qui me sert à récup le Type Mime à partir d'une extension de fichier
     
    		byte[] buffer = new byte[ 512 ];
     
    		for( int length = 0; ( length = is.read( buffer ) ) > 0; )
    			os.write( buffer, 0, length );
     
    		os.flush();
    	}
    	catch( Exception e )
    	{
    		e.printStackTrace();
    	}
    	finally
    	{
    		if( os != null )
    			os.close();
     
    		if( is != null )
    			is.close();
    	}
    }
    Reste à voir comment récupérer le contenue de ton image dans ta BDD, mais ça je te laisse faire

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    mouais, sauf le catch, il ne faut pas faire printStackTrace mais propager l'exception, éventuellement wrappée dans une ServletException. comme ça, ça remonte en tant qu'erreur http 500 dans le client

  5. #5
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Oui en effet

    J'ai vite fait modifié une Servlet que j'avais sous la main pour l'exemple mais dans mon cas j'ai des traitements dans le catch. du coup j'ai bêtement mit un printStackTrace()

  6. #6
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Pour le type mime, on peut se baser sur FileTypeMap
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

Discussions similaires

  1. Afficher une image depuis la bdd
    Par CLion dans le forum Langage
    Réponses: 1
    Dernier message: 21/02/2014, 22h29
  2. Afficher les images d'un dossier dans une IHM
    Par danathane dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2008, 15h27
  3. [c#] recuper une image depuis sa BDD
    Par fally dans le forum C#
    Réponses: 3
    Dernier message: 20/03/2008, 10h30
  4. n'affiche pas une image arriere plan definis dans une CSS
    Par mikebranque dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 30/06/2006, 15h54

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