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 :

Ecrire dans un XML en passant par une servlet


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Ecrire dans un XML en passant par une servlet
    Bonjour à tous.
    Voilà je viens vous exposer mon problème ici, car j'y ai passé la journée et n'ai pas vraiment avancé..voir pas du tout .. bref je suis en grosse galère.

    Le problème :
    je veut écrire dans un .xml, rajouter un élément, en passant par une servlet.
    En gros j'ai donc :
    une page html -> lance la servlet -> servlet écrit dans le xml
    J'utilise donc Jdom pour parser le document.

    Mais voilà, rien ne s'écrit dans mon fichier xml si je passe par la servlet, alors que si je passe par une classe de test, qui effectue exactement la même chose, ça fonctionne bien .. je n'y comprends rien.

    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
    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
     
    package servlet;
     
    import gestionReservation.Calendrier;
    import gestionReservation.Reservation;
    import gestionReservation.Salle;
    import comparaison.ComparerResa;
    import persistance.TraitementJdom;
     
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
     
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
     
    /**
     * Servlet implementation class ServletReservation
     */
    @WebServlet("/ServletReservation")
    public class ServletReservation extends HttpServlet {
    	private static final long serialVersionUID = 1L;
        private TraitementJdom m_traitementJdom = null;   
        /**
         * @see HttpServlet#HttpServlet()
         */
        public ServletReservation() {
            super();
            this.m_traitementJdom = new TraitementJdom();
     
        }
     
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		Salle salle2 = new Salle(2);
    		Salle salle1 = new Salle(1);
    		Salle salle3 = new Salle(3);
    		List lsalles = new ArrayList();
    		lsalles.add(salle1);
    		lsalles.add(salle2);
    		lsalles.add(salle3);
     
    		Calendar dateDeb = Calendar.getInstance();
    		Calendar dateFin = Calendar.getInstance();
    		dateDeb.set(2013, 03, 24, 16,15);
    		dateFin.set(2013,03,24,15,15);
     
    		Calendar dateDeb2 = Calendar.getInstance(); 
    		Calendar dateFin2 = Calendar.getInstance();
    		dateDeb.set(2013, 03, 25, 16,15);
    		dateFin.set(2013,03,25,15,15);
     
    		String commentaire="";
     
    		//réservations
    		Reservation resa = new Reservation(1,salle2.getNumSalle(), dateDeb, dateFin,commentaire);
    		Reservation resa2 = new Reservation(2, salle3.getNumSalle(), dateDeb2, dateFin2,commentaire);
     
    		//liste réservations
    		Calendrier cal=new Calendrier();
    		cal.getListeResa().add(resa);
    		cal.getListeResa().add(resa2);
     
    		//affichage des reservations
    		String str = "";
    		str=cal.afficherReservation(cal.getListeResa());
    		request.setAttribute("reservations", str);
    		this.getServletContext().getRequestDispatcher( "/affichageReservation.jsp" ).forward( request, response );
     
    		TraitementJdom arbre = new TraitementJdom();
    		arbre.parserDocument();
    		arbre.creerSalle("4");
    	}
     
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
     
     
    		Calendrier cal=new Calendrier();
    		int numSalle=Integer.parseInt(request.getParameter("numSalle")); //récupère le contenu du champs salle
    		String dateDebut=request.getParameter("dateDebut");
    		String heureDeb=request.getParameter("heureDeb");
    		String heureFin=request.getParameter("heureFin");
     
    		Calendar dateConvertDeb = Calendar.getInstance();
    		Calendar dateConvertFin = Calendar.getInstance();
     
    		//decouper chaine de caractères
    		if(dateDebut!=null && heureDeb!=null && heureFin!=null){
     
    			String[] dateDecoup;
    			dateDecoup=new String[3];
     
    			String[] heureDebDecoup;
    			heureDebDecoup=new String[2];
    			String[] heureFinDecoup;
    			heureFinDecoup=new String[2];
     
    			dateDecoup = dateDebut.split("/");
    			heureDebDecoup = heureDeb.split(":");
    			heureFinDecoup = heureFin.split(":");
    			//conversion str to calendar
    			dateConvertDeb.set(Integer.parseInt(dateDecoup[2]),
    					Integer.parseInt(dateDecoup[1]), Integer.parseInt(dateDecoup[0]),
    					Integer.parseInt(heureDebDecoup[0]),Integer.parseInt(heureDebDecoup[1]));
    			dateConvertFin.set(Integer.parseInt(dateDecoup[2]), 
    					Integer.parseInt(dateDecoup[1]), Integer.parseInt(dateDecoup[0]),
    					Integer.parseInt(heureFinDecoup[0]),Integer.parseInt(heureFinDecoup[1]));
     
    			Reservation resaTest=cal.reserverUneSalle(numSalle, dateConvertDeb, dateConvertFin, cal.getListeResa());
    			cal.getListeResa().add(resaTest);
    			String str = "";
    			str=cal.afficherReservation(cal.getListeResa());
    			request.setAttribute("reservations_post", str);
     
    			//persistance
    	//		Element salle = new Element("salle");
     
    			//request.setAttribute("coucou", str);
    			this.getServletContext().getRequestDispatcher( "/affichageReservation.jsp" ).forward( request, response );
     
     
     
    		}
    		else{
    			String str_erreur="erreur";
    			request.setAttribute("reservations_erreur", str_erreur);
    			this.getServletContext().getRequestDispatcher( "/affichageReservation.jsp" ).forward( request, response );
     
    		}//fin condition
     
     
    		this.m_traitementJdom.parserDocument();
    		this.m_traitementJdom.creerSalle("4");
     
     
    	}//fin do post
     
    	//public void init(ServletConfig config) throws ServletException{
    	//}
     
    }
    à la fin je fais :
    this.m_traitementJdom.parserDocument();
    this.m_traitementJdom.creerSalle("4");
    et rien ne se crée dans le .xml

    Alors que si je fais une petite classe main, et je remet exactement la même chose, ça fonctionne ...


    et mon traitement jdom

    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
    package persistance;
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.util.Iterator;
    import java.util.List;
     
    import org.jdom2.*;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.output.Format;
    import org.jdom2.output.XMLOutputter;
    import org.w3c.dom.css.DocumentCSS;
    import org.jaxen.*;
     
    public class TraitementJdom {
    	private Element m_racine = null;
    	private DocType doctype = null;
    	private Document m_document = null;
     
    	public TraitementJdom(){
    		this.m_racine = new Element("calendrier");
    		this.doctype = new DocType("calendrier", "dtdResa.dtd");
    		this.m_document = new Document(m_racine, doctype);
    	}
     
    	public void parserDocument(){
    		SAXBuilder sxb = new SAXBuilder();
    	      try
    	      {
    	         this.m_document = sxb.build(new File("WebContent/lib/listeSallesReservations.xml"));	
    	      }
    	      catch(Exception e){}
     
    	      //On initialise un nouvel élément racine avec l'élément racine du document
    		  this.doctype = new DocType("calendrier", "dtdResa.dtd");
    	      this.m_racine = this.m_document.getRootElement();         
    	}
     
    	public void ecrire(){
    		Format format= Format.getPrettyFormat();
    		format.setEncoding("ISO-8859-1");
    		XMLOutputter sortie = new XMLOutputter(format);
    		FileOutputStream fos = null;
    		try{
    			fos = new FileOutputStream("WebContent/lib/listeSallesReservations.xml");
    			OutputStreamWriter out = new OutputStreamWriter(fos,"ISO-8859-1");
    			sortie.output(this.m_document, out);
    		}
    		catch(IOException e){
    			e.printStackTrace();
    		}finally{
    			if (fos !=null){
    				try{
    					fos.close();
    				}catch(IOException e){
    					e.printStackTrace();
    				}
    			}
    		}
     
    	}
     
    public void creerReservation(String numSalleResa, String numReservation, String dateReservation, String heureDebutResa, String heureFinResa, String commentaireResa){
     
    		Element reservation = new Element("reservation");
     
    		Element numResa = new Element("numResa");
    		Element date = new Element("date");
    		Element heureDeb = new Element("heureDeb");
    		Element heureFin = new Element("heureFin");
    		Element commentaire = new Element("commentaire");
     
    		numResa.setText(numReservation);
    		date.setText(dateReservation);
    		heureDeb.setText(heureDebutResa);
    		heureFin.setText(heureFinResa);
    		commentaire.setText(commentaireResa);
     
    		reservation.addContent(numResa);
    		reservation.addContent(date);
    		reservation.addContent(heureDeb);
    		reservation.addContent(heureFin);
    		reservation.addContent(commentaire);
     
    		this.getSalle(numSalleResa).addContent(reservation);
    		ecrire();	
    	}
     
    public void creerSalle(String numeroSalle){
    	Element salle = new Element("salle");
    	Element numSalle = new Element("numSalle");
     
    	numSalle.setText(numeroSalle);
    	salle.addContent(numSalle);
     
    	this.m_racine.addContent(salle);
    	ecrire();
    }
     
    public Element getSalle(String numeroSalle){	
    	Element salle = null;
     
    	List listEtudiants = this.m_racine.getChildren("salle");
     
    	Iterator i = listEtudiants.iterator();
    	   while(i.hasNext())
    	   {
    	      Element courant = (Element)i.next();
    	      if(courant.getChild("numSalle").getTextTrim() == numeroSalle){
    	salle = courant;
    	      }
    	   }	   
    	return salle;
    	}
     
    }

    J'espère que vous pourrez m'aider à résoudre ce problème ..
    Si je n'ai pas bien expliqué demandez moi .. mais je pense que c'est une erreur très conne ...

    Un grand merci à tous ceux qui essayeront de m'aider...


    EDIT : j'ai entendu parlé de "déployé la bibliothèque que tu utilises avec ton application web sur le serveur"
    C'est certainement ça mon pb, qq'un pourrait m'expliquer de façon détaillé (que j'arrive à suivre...) en quoi cela consiste ?

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bjr,
    Peut on avoir la trace complète d'erreur dans le cas où ça ne marche pas?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour et merci pour cette première réponse.

    Il n'y a pas d'erreur en faite c'est bien le problème ... c'est juste qu'exactement le même code fonctionne en passant par une classe classique type Main d'Eclipse, mais si je mets ce code dans ma servlet et que je teste dans mon navigateur, il ne se passe rien dans le fichier .xml, mais aucune erreur n'est annoncée.

    Merci

  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Je pense que l'erreur doit provenir de ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void parserDocument(){
    		SAXBuilder sxb = new SAXBuilder();
    	      try
    	      {
    	         this.m_document = sxb.build(new File("WebContent/lib/listeSallesReservations.xml"));	
    	      }
    	      catch(Exception e){}
     
    	      //On initialise un nouvel élément racine avec l'élément racine du document
    		  this.doctype = new DocType("calendrier", "dtdResa.dtd");
    	      this.m_racine = this.m_document.getRootElement();         
    	}
    A mon avis il ne doit pas retrouver le chemin vers le fichier quand le test se fait via le web. Il faut mettre des traces d'affichage dans le catch, tu verras qu'il y rentre, et donc ne charge pas ton fichier escompté.Teste et redis nous, on te filera ensuite la solution si confirmation.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

Discussions similaires

  1. [Spip] Modifier l'url d'une image incluse dans les articles en passant par le squelette
    Par kaching dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 14/01/2014, 10h36
  2. Réponses: 2
    Dernier message: 17/05/2011, 19h20
  3. Réponses: 2
    Dernier message: 14/03/2011, 13h35
  4. html to xml en passant par une webapp
    Par scolopendra dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 14/09/2009, 12h49
  5. Réponses: 12
    Dernier message: 21/10/2005, 14h35

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