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 :

servlet + JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 73
    Par défaut servlet + JSF
    Bonsoir à tous

    j'ai rencontrer quelques difficulté ce dernier temps à tout ce qui est relative au servlet j'ai quelques question et je souhaite votre aide ..

    tt d'abord je devellope une application web sous JSF
    j'ai ajouter une nouvelle servlet afin d'exporter quelque données qui provienne de ma base vers des fichier MSPPT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <servlet>
        <description></description>
        <display-name>exportServlet</display-name>
        <servlet-name>exportServlet</servlet-name>
        <servlet-class>com.sogeti.tref.servlet.ExportServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>exportServlet</servlet-name>
        <url-pattern>/export/*</url-pattern>
      </servlet-mapping>
    La seul Méthode avec laquelle j'invoque ma servlet est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <h:outputLink value="../export?id=#{reference.noReference}">
    <h:outputLabel value="Exporter" style="font-size: 11px;"></h:outputLabel>
    </h:outputLink>
    (dans le dernier cas je passe seulement un "id" je le récupère dans le servlet et je renvoi une fichier ppt (api poi de apache))

    Maintenant que le chose devient plus compliquer

    je voulais savoir :

    -comment appeler ma servlet depuis un *<h:commandButton/> si c'est possible
    -comment passer plusieurs paramètres id1 id2
    -comment appeler ma servlet depuis mon mannaged bean


    Merci d'avance

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    pourquoi tu utilise une servlet?

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 73
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    pourquoi tu utilise une servlet?

    Bonjour Sniper37
    en faite le but de l'utilisation de servlet était de streamer(afficher) quelques Media(image ,video ...) vers la page jsp
    c'etait la seule solution ..que je connais

    j'ai créer cette servlet en se basant sur un article que j'ai trouver sur le site:
    http://balusc.blogspot.com

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        	// Get ID from request.
     
            String fileId = request.getParameter("id");
            //Parse it to int ...THINK about hash() for security ...
        	int id =Integer.parseInt(fileId);
            // Check if ID is supplied to the request.
            if (fileId == null||Integer.parseInt(fileId)==0) {
                // Do your thing if the ID is not supplied to the request.
                // Throw an exception, or send 404, or show default/warning page, or just ignore it.
                response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404.
                return;
            }
             // Lookup for file(blob) by FileId in database.
     
                try{
                setReference( ReferenceBean().findReference(id));
     
                   }catch (Exception e)
                          {e.printStackTrace();}
             // Check if file is actually retrieved from database.
                if (getReference() == null) {
                    // Do your thing if the file does not exist in database.
                    // Throw an exception, or send 404, or show default/warning page, or just ignore it.
                    response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404.
                    return;
                }
             // Init servlet response.
                response.reset();
                response.setBufferSize(DEFAULT_BUFFER_SIZE);
                //response.setHeader("Content-Type", file.getContentType());
                response.setHeader("Content-Type",client.getLogotype());
                response.setHeader("Content-Length", String.valueOf(client.getLogo().length));
                response.setHeader("Content-Disposition", "inline; filename=\"" + client.getNom() + "\"");
     
                // Prepare streams.
                BufferedInputStream input = null;
                BufferedOutputStream output = null;
     
                try {
                    // Open streams.
                	SerialBlob media = new SerialBlob(client.getLogo());
     
                    input = new BufferedInputStream(media.getBinaryStream(), DEFAULT_BUFFER_SIZE);
                    output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);
                    System.out.println("Lenght Media Serial:"+media.length()+"");
     
                    // Write file contents to response.
                    byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
                    int length;
                    while ((length = input.read(buffer)) > 0) {
                        output.write(buffer, 0, length);
                    }
                 // Finalize task.
                    output.flush();
                }
                    catch (Exception e){e.printStackTrace();}
     
     
     
                finally {
                    // Gently close streams.
                    close(output);
                    close(input);
                }
     
     
            }

    Maintenant que j'ai besoin de générer des documents (powerpoint,pdf,word,excel)et les mettre à la disposition de client (ouvrir,sauvgarder)

    ce pour cela que je préfère développer le code de génération des document dans la même servlet qui va renvoyer ces document

    d'ailleur la génération de n'importe quel document va se faire en temps réel et à la demande

    Mais s'il ya une autre méthode afin d'éviter l'utilisation d'une servlet je suis preneur

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    si tu utilise poi, tu peux sur une action JSF construite ton fichier pdf et le télécharger ensuite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    OutputStream out;
    		try {
    			out = response.getOutputStream();
     
    			out.write(flux);
    			out.close();
    			context.responseComplete();
    		} catch (IOException e) {
     
    			e.printStackTrace();
    		}
    Pour afficher des images, vidéo ..un composant de Richfaces permet de le faire.

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 73
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    si tu utilise poi, tu peux sur une action JSF construite ton fichier pdf et le télécharger ensuite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    OutputStream out;
    		try {
    			out = response.getOutputStream();
     
    			out.write(flux);
    			out.close();
    			context.responseComplete();
    		} catch (IOException e) {
     
    			e.printStackTrace();
    		}
    Pour afficher des images, vidéo ..un composant de Richfaces permet de le faire.

    Une derniere question avant que je marque cette discussion comme résolu
    context.responseComplete();

    si je la compare avec le servlet a chaque fois je dois specifier au moins le type de fichier son lenght disposition (attachement/inline/..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    response.setHeader("Content-Type", image/pdf/ppt/..
    response.setHeader("Content-Length", 
    response.setHeader("Content-Disposition"
    suffit il de mettre context.responseComplete() pour renvoyer le document au client ??

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ouiiii..et pour le header, ceci doit suffir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	response.setContentType("application/octet-stream");
           String fileName = "xxYyyy";
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName + "");

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

Discussions similaires

  1. Projet j2ee JSP Servlet JSF
    Par majdicosta dans le forum JSF
    Réponses: 3
    Dernier message: 28/02/2013, 08h04
  2. jsp servlet + Jsf
    Par midos dans le forum JSF
    Réponses: 2
    Dernier message: 05/03/2010, 17h06
  3. Réponses: 1
    Dernier message: 26/05/2008, 08h44
  4. {JAVA}Heberjeur de servlet jsf jsp
    Par liquideshark dans le forum Hébergement
    Réponses: 1
    Dernier message: 13/02/2007, 13h08
  5. Servlets & JSF
    Par raj dans le forum JSF
    Réponses: 2
    Dernier message: 21/08/2006, 17h00

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