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 :

Les données ne s'ajoutent pas dans le fichier XML


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut Les données ne s'ajoutent pas dans le fichier XML
    Bonjour,
    J'ai une servlet qui récupérè les donnée d'un formulaire (qui fonctionne) et qui les ajoutes dans un fichier xml, mais le fichier xml ne se crée pas
    La servlet appelle un fichier java qui ajoute les données xml.
    Je n'ai pas de message d'erreur, je n'ai qu'une page blanche après avoir entrée les données sur la page web

    la servlet

    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
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
     
    		String nom,prenom,email,telPortable,telFixe,commentaire;
     
    		response.setContentType("text/plain");
    		//PrintWriter pw = response.getWriter(); 
     
    		nom = request.getParameter("nom");
    		prenom = request.getParameter("prenom");
    		email = request.getParameter("email");
    		telPortable = request.getParameter("tel_portable");
    		telFixe = request.getParameter("tel_fixe");
    		commentaire = request.getParameter("commentaire");
     
     
    		new Ajouter(nom,prenom,email,telPortable,telFixe,commentaire); 
     
     
    	}
    Le fichier java qui ajoute les données dans le fichier xml

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    package packageTreatment;
     
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.JDOMException;
    import org.jdom2.Parent;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.output.XMLOutputter;
     
    public class Ajouter {
     
    	static String nom;
    	static String prenom; 
    	static String email;
    	static String telPortable;
    	static String telFixe;
    	static String commentaire ;
     
    	public Ajouter(String parNom, String parPrenom, String parEmail, String parTelPortable, String parTelFixe, String parCommentaire)
    	{
    		nom = parNom ;
    		prenom = parPrenom ; 
    		email = parEmail;
    		telPortable = parTelPortable;
    		telFixe = parTelFixe;
    		commentaire = parCommentaire;
     
    	}
     
    	public static void main(String[] args) throws Exception 
    	{
    		Document document = Ajouter.ajout("WebContent/annuaire.xml");
     
    		enregistreFichier(document,"WebContent/NEWannuaire.xml");
     
    	}
     
     
    	static Document ajout(String fileName) throws JDOMException, IOException
    	{ 
    		Document document = null ;
    		File file = new File(fileName);		
    		SAXBuilder builder = new SAXBuilder(); 
     
    		document = builder.build(file);
     
     
     
    		//----------------- Création des éléments ------------------ \\
     
    		Element personne = new Element("personne");
    		personne.setAttribute("id",nom) ;
     
    		Element varNom = new Element("nom");
    		varNom.setText(nom);
     
    		Element varPrenom = new Element("prenom");
    		varNom.setText(prenom);
     
    		Element varEmail = new Element("email");
    		varNom.setText(email);
     
    		Element varTelPortable = new Element("telPortable");
    		varNom.setText(telPortable);
     
    		Element varTelFixe = new Element("telFixe");
    		varNom.setText(telFixe);
     
    		Element varCom = new Element("commentaire");
    		varNom.setText(commentaire);
     
    		// ----------------- Création de la hiérarchie ---------------- \\
     
    		personne.addContent(varNom);
    		personne.addContent(varPrenom);
    		personne.addContent(varEmail);
    		personne.addContent(varTelPortable);
    		personne.addContent(varTelFixe);
    		personne.addContent(varCom);
     
    		document.getRootElement().addContent(personne);
     
     
    		return document ;
     
    	}
     
        static void enregistreFichier(Document document,String fichier) throws Exception
        {
        	XMLOutputter sortie = new XMLOutputter();
        	sortie.output(document, new FileOutputStream(fichier));
        }
     
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il faudrait revoir un peu les bases : le programme ne fait que ce que tu lui demandes de faire. Ni plus. Ni moins.

    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Ajouter(nom,prenom,email,telPortable,telFixe,commentaire);
    ; ça exécute le constructeur de Ajouter, soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Ajouter(String parNom, String parPrenom, String parEmail, String parTelPortable, String parTelFixe, String parCommentaire)
    	{
    		nom = parNom ;
    		prenom = parPrenom ; 
    		email = parEmail;
    		telPortable = parTelPortable;
    		telFixe = parTelFixe;
    		commentaire = parCommentaire;
     
    	}
    Ni plus. Ni moins. Donc ça ne fait que mettre les valeurs que tu passes en paramètre dans les variables statiques. Et rien de plus. Il faut appeler la méthode qui fait l'ajout dans le fichier xml, pour que ça le fasse. Bon, là, tu as bidouillé un truc avec des variables statiques et une méthode main() qui n'a d'intérêt que pour lancer un programme, mais dans ton contexte, une simple méthode de sauvegarde avec des variables locales feraient la sauvegarde sans bidouille avec des statiques, qui te poseront problème en cas d'accès multiple (à priori une application web est utilisable par plus d'une personne à la fois.

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    package packageTreatment;
     
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
     
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.JDOMException;
    import org.jdom2.Parent;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.output.XMLOutputter;
     
    public class Ajouter {
     
     
    	public static void ajouter(String parNom, String parPrenom, String parEmail, String parTelPortable, String parTelFixe, String parCommentaire)
    	{
    		Document document = Ajouter.ajout("WebContent/annuaire.xml", parNom, parPrenom, parEmail, parTelPortable,  parTelFixe, parCommentaire);
     
    		enregistreFichier(document,"WebContent/NEWannuaire.xml");
     
    	}
     
     
    	private static Document ajout(String fileName, String parNom, String parPrenom, String parEmail, String parTelPortable, String parTelFixe, String parCommentaire) throws JDOMException, IOException
    	{ 
    		Document document = null ;
    		File file = new File(fileName);		
    		SAXBuilder builder = new SAXBuilder(); 
     
    		document = builder.build(file);
     
     
     
    		//----------------- Création des éléments ------------------ \\
     
    		Element personne = new Element("personne");
    		personne.setAttribute("id",nom) ;
     
    		Element varNom = new Element("nom");
    		varNom.setText(nom);
     
    		Element varPrenom = new Element("prenom");
    		varNom.setText(prenom);
     
    		Element varEmail = new Element("email");
    		varNom.setText(email);
     
    		Element varTelPortable = new Element("telPortable");
    		varNom.setText(telPortable);
     
    		Element varTelFixe = new Element("telFixe");
    		varNom.setText(telFixe);
     
    		Element varCom = new Element("commentaire");
    		varNom.setText(commentaire);
     
    		// ----------------- Création de la hiérarchie ---------------- \\
     
    		personne.addContent(varNom);
    		personne.addContent(varPrenom);
    		personne.addContent(varEmail);
    		personne.addContent(varTelPortable);
    		personne.addContent(varTelFixe);
    		personne.addContent(varCom);
     
    		document.getRootElement().addContent(personne);
     
     
    		return document ;
     
    	}
     
        private static void enregistreFichier(Document document,String fichier) throws Exception
        {
        	XMLOutputter sortie = new XMLOutputter();
        	sortie.output(document, new FileOutputStream(fichier));
        }
     
    }
    Pour commencer. Que tu appelles dans ta servlet comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ajouter.ajouter(nom,prenom,email,telPortable,telFixe,commentaire);
    Ensuite 3 problèmes, au moins :

    • Le chemin n'est pas bon : il me semble t'avoir parler de ça dans une autre discussion,
    • Ensuite, tu lis un fichier, et tu écris dans un autre : si tu ajoutes 2 utilisateurs, le premier sera perdu (puisque tu repars d'un fichier qui n'est jamais modifié (il faut à la fin remplacer l'ancien fichier par le nouveau : voir renameTo().
    • Si plusieurs personnes ajoutent des utilisateurs en même temps, l'un d'eux ouvrira le fichier pour écrire dedans et les autres se feront jeter... (à régler tout simplement par synchronized)


    Ah, j'oubliais : si tu as une page blanche en réponse c'est parce que ta servlet genère une réponse de type plain/text dans laquelle tu n'écris rien.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Bonjour,
    Pour le chemin je ne comprends pas très bien , j'ai mis la même chose que dans l'autre discussion mais le chemin étant un string il m'affiche des erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	public static void ajouter(String parNom, String parPrenom, String parEmail, String parTelPortable, String parTelFixe, String parCommentaire) throws Exception 
    	{
    		SAXBuilder sxb = new SAXBuilder(); 
    		Document doc = sxb.build(new File(request.getServletContext().getRealPath("annuaire.xml"));
     
    		Document document = Ajouter.ajout(doc,parNom, parPrenom, parEmail, parTelPortable,  parTelFixe, parCommentaire);
     
    		enregistreFichier(document,doc);
     
    	}

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    C'est bien ce que je disais : il faut reprendre les bases !

    C'est quoi request dans la méthode ajouter ? C'est quelque chose qui n'a aucun sens pour Java, ou, à la limite une variable qui n'existe pas. Il faut passer l'instance de request, ou de ServletContext en paramètre de la méthode ajouter, pour pouvoir appeler une de ses méthodes dans la méthode ajouter().
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Mais pour le chemin, il faut que ce soit un string là c'est un document pour les méthodes ajout et enregistreFichier.

    fichier Ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	public static void ajouter(String parNom, String parPrenom, String parEmail, String parTelPortable, String parTelFixe, String parCommentaire, HttpServletRequest request) throws Exception 
    	{
    		SAXBuilder sxb = new SAXBuilder(); 
    		Document doc = sxb.build(new File(request.getServletContext().getRealPath("annuaire.xml")));
     
    		Document document = Ajouter.ajout(doc,parNom, parPrenom, parEmail, parTelPortable,  parTelFixe, parCommentaire);
     
    		enregistreFichier(document,doc);
     
    	}
    fichier Servlet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		...
    		try {
    			Ajouter.ajouter(nom,prenom,email,telPortable,telFixe,commentaire, request);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Pour le nom du fichier, certes, mais pas son chemin absolu, que tu ne peux connaitre forcément à l'avance, puis qu'il dépend du nom du dossier de l'application web et du dossier d'installation du serveur (voir de la structure des dossiers en fonction du serveur).

    D'ailleurs, pour des fichiers qu'on modifie, il vaut mieux les stocker dans un répertoire à part du dossier de l'application web (lors d'un redéploiement, les fichiers dans webcontent seront supprimés). : ainsi tu te prévois un dossier là où tu veux ton disque dont le chemin absolu est connu de ton application (éventuellement paramétrable), et tu n'as plus besoin de traiter le path en relatif par rapport à quoique ce soit (context de l'application web ou dossier de lancement de l'application).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/06/2012, 23h23
  2. Réponses: 1
    Dernier message: 13/04/2012, 13h51
  3. Réponses: 1
    Dernier message: 10/08/2009, 09h21
  4. Les données ne s'affiche pas dans RaveReports
    Par savoir dans le forum Rave
    Réponses: 2
    Dernier message: 12/02/2008, 14h47
  5. toute les donnée ne s'inscrivent pas dans ma table paradox
    Par pierrot67 dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/06/2006, 21h11

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