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 :

Java/XML generer un fichier XML a partir d'une Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 25
    Points
    25
    Par défaut Java/XML generer un fichier XML a partir d'une Servlet
    Bonjour,

    je cherche une methode pour generer un fichier XML a partir d'une servlet et des parametres reçus a partir d'une requete. Le but etant de renvoyer au client un fichier formate en pdf (pour cette etape pas de souci avec FOP ).

    Merci d'avance pour vos idees.

  2. #2
    Membre habitué Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Points : 178
    Points
    178
    Par défaut
    Le premier truc tout simple (mais pas ideal):
    Dans ta servlet tu crées dans une String le contenu de ton fichier XML puis tu retourne ca.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    monFichierXml = "<toto>";
    //...
    monFichierXml += "</toto>";
    // Write XML to response.
    response.setContentType("application/xml");
    response.getWriter().write(monFichierXml );
    Sinon je te propose les APIs classiques de gestion de XML telles que jdom mais pour ca je te laisse aller voir les tutos qui t'expliqueront bcp mieux que moi.
    Je suis en train de faire un truc comme toi et je te conseille d'utiliser une API dédiée (j'utilise jdom). Par contre j'en suis qu'au début dc je ne peux pas te donner bcp d'autres conseils.

    A+ et bon courage

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    excellent merci, je ne connaissais pas jdom ...

    ca va me permettre d'auto-generer mon fichier XML et del'enregistrer, ensuite j'utilise FOP pour le convertir. Maintenant, comment puis le faire s'afficher au niveau du navigateur du poste client ? A priori, il faut qu'un plugin capable d'interpreter le pdf soit installe au niveau du navigateur de mon client, ai-je un moyen de tester sa presence et de m'en servir ?

  4. #4
    Membre habitué Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Points : 178
    Points
    178
    Par défaut
    Alors tu ne peux pas tester si ton user a installé Acrobat reader, cependant c'est un programme tres rependu et au cas ou tu peux rajouter un lien vers le telechargement de celui-ci (qui est gratuit).
    De toute facon, si c'est pour de l'internet la majorité des internautes l'ont installé (il me semble du moins) et si c'est pour de l'intranet tu peux demander à tes utilisateurs de l'installer.
    Ensuite pour afficher ce document, j'ai créé une servlet que j'ai nommé (mappé) document.pdf (dans web.xml) qui lit le fichier et le redirige vers le navigateur client (tu peux aussi mettre un lien directement sur le fichier mais ca depend de ta gestion des autorisations et de l'endroit ou tu stockes tes fichiers).
    Je te met le code au cas ou...
    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
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.net.MalformedURLException;
     
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
    public class DocumentReader extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}  	
     
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    		try {
    			// Get the file from the GADN
    			Long id = Long.parseLong(request.getParameter("id"));
    			Document doc = Facade.getDocumentFactory().findByIdentifier(id);
    			File file = new File(doc.getGEDIndex());
     
    			response.setContentType( "application/pdf" );
    			//response.setHeader("Content-disposition", "attachment; filename="+file.getName()+".pdf" ); // Pour forcer à ouvrir le pdf en tant qu'appli externe et non dans le browser
     
    			ServletOutputStream out = response.getOutputStream();
    			BufferedInputStream  bis = null;
    			BufferedOutputStream bos = null;
    			FileInputStream fis = new FileInputStream(file);
    			// Use Buffered Stream for reading/writing.
    			bis = new BufferedInputStream(fis);
    			bos = new BufferedOutputStream(out);
    			byte[] buff = new byte[2048];
    			int bytesRead;
    			// Simple read/write loop.
    			while(-1 != (bytesRead = bis.read(buff, 0, buff.length)))
    				bos.write(buff, 0, bytesRead);
    			bis.close();
    			bos.close();
    		}
    		catch(final MalformedURLException e) {
    			ErrorLog.log("Document read failed", e, user );
    			request.setAttribute("message", "Document read failed: "+e.getMessage());
    			request.getRequestDispatcher("../error_page.jsp").forward(request, response);
    		} catch(final IOException e) {
    			ErrorLog.log("Document read failed", e, user );
    			request.setAttribute("message", "Document read failed: "+e.getMessage());
    			request.getRequestDispatcher("../error_page.jsp").forward(request, response);
    		} catch (DaoException e) {
    			ErrorLog.log("Document read failed", e, user );
    			request.setAttribute("message", "Document read failed: "+e.getMessage());
    			request.getRequestDispatcher("../error_page.jsp").forward(request, response);
    		} catch (InvalidParameterException e) {
    			ErrorLog.log("Document read failed", e, user );
    			request.setAttribute("message", "Document read failed: "+e.getMessage());
    			request.getRequestDispatcher("../error_page.jsp").forward(request, response);
    		}
    	}   	  	    
    }
    Bon j'espere avoir ete clair... Sinon n'hesite pas
    a+
    Manu

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Points : 42
    Points
    42
    Par défaut
    bonjour,
    desole de remonter ce message mais le code m'interrese.
    En effet, la generation du xml a partir d'une servlet m'interresse fortement mais je voudrais savoir comment faire en javascript pour acceder a ce flux emi,je precise pas d'AJAX svp.

    merci

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/05/2007, 09h30
  2. Decomposé un fichier XML en plusieurs fichiers XML sous python
    Par elhout dans le forum Général Python
    Réponses: 6
    Dernier message: 12/03/2007, 14h20
  3. [XSLT] transfo d'un fichier XML en plusieurs fichiers XML
    Par doudou_rennes dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2006, 12h01
  4. [XSLT]transformer un fichier XML en en fichier XML
    Par alexandra dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 16/08/2006, 14h26
  5. Réponses: 4
    Dernier message: 31/07/2006, 09h31

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