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 :

Servlet: Ecrire dans un fichier txt des données issues d'un formulaire HTML


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut Servlet: Ecrire dans un fichier txt des données issues d'un formulaire HTML
    Bonjour,

    Je suis en train de réaliser une servlet pour gérer une collection de livres. Et mon soucis est d'écrire dans un fichier .txt le enregistrements provenant des formulaires. J'ai récupéré tous les enregitrements grâce à la méthode getParameter mais je n'arrive pas à érire le données dans mon fichier.

    Voici mon code :

    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
     
    String titre = request.getParameter("titre");
     
        	if (titre.length() == 0)
        	{
        		out.println("L'enregistrement du titre de ce livre est vide" + "<br>");
        	}
        	else
        	{
        		out.println("<font size=\"3\">");
        		out.println("Titre :" + titre + "<br>");
        	}
     
            FileWriter writer = null;
            try{
                 writer = new FileWriter("collection.txt", true);
                 writer.write(titre,0,titre.length());
            }catch(IOException ex){
                ex.printStackTrace();
            }finally{
              if(writer != null){
                 writer.close();
              }
            }
    Ce n'est pas le code en entier mais le bouts interessant pour mon test, histoire de savoir si cela fonctionne.

    Merci d'avance
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  2. #2
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Quand tu dis que tu n'y arrive pas , tu as une exception ou le fichier est seulement vide ?
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  3. #3
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut
    Le plus drôle c'est que je n'ai mm pas de fichier. Normalement, le fichier devrait se trouver dans le même dossier que les classes ? Sinon peut être qu'il existe mais je ne sais où.
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  4. #4
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut
    Ba en fait, après avoir répondu à ton post je me suis dit, fait une recherche windows, ça ne mange pas de pain. Et en fait, ba je l'ai trouvé dans la racine de Tomcat.

    Je vais faire des tests pour voir si le programme fait bien ce que je veux.
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  5. #5
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut
    Le programme écris bien dans le fichier mais seulement lorsque je met qu'un seul parametre comme par exemple titre. Mais cela ne fonctionne pas lorsque je fais ceci :

    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
     
        	    	BufferedWriter ecrivain = null;
            try{
                 ecrivain = new BufferedWriter (new FileWriter("collection_livres.txt", true));
                 ecrivain.write("Titre : " + titre + "\n",0,titre.length() + 10);
                 ecrivain.write("Isbn : " + isbn + "\n",0,isbn.length() + 9);
                 ecrivain.write("Auteur : " + auteur + "\n",0,auteur.length() + 11);
                 ecrivain.write("Année : " + annee + "\n",0,annee.length() + 10);
                 ecrivain.write("Nombre de pages : " + nombrepages + "\n",0,nombrepages.length() + 18);
                 ecrivain.write("Prix : " + prix + "\n",0,prix.length() + 9);
            }catch(IOException ex){
                ex.printStackTrace();
            }finally{
              if(ecrivain != null){
                 ecrivain.close();
              }
            }
    J'ai une erreur qui me dit que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    java.lang.StringIndexOutOfBoundsException: String index out of range: 15
    	java.lang.String.getChars(Unknown Source)
    	java.io.BufferedWriter.write(Unknown Source)
    	Visionneuse.doGet(Visionneuse.java:148)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    La ligne 148 est celle ou se trouve ecrivain.write ...titre...
    Normalement cette exception n'apparait seulement lorsque il y trop de caractere pour ce qu'il y a de allouer ? Je pense avoir bien compté pourtant.

    Si quelqu'un a une idée.
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  6. #6
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut
    Pour ceux que cela intéressent j'ai réussi en changeant de méthode. A la place d'utiliser la méthode write qui ne fonctionnais pas parce que je ne sais pourquoi, j'ai utilisé simplement la méthode println toujours avec filewriter.
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  7. #7
    hlr
    hlr est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    A titre d'info, tu utilises mal la méthode write de BufferedWriter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    write(String s, int off, int len)
    ecrivain.write("Titre : " + titre + "\n",0,titre.length() + 10);
    Tu donnes la mauvaises longueur : "Titre : " + "\n" a une longueur 9 et pas 10, du coup tu essaies 1 caractère de trop.
    Une bonne pratique (pour plus tard...) : utilises une variable de type String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String maLigne = "Titre : " + titre + "\n"
    ecrivain.write(maLigne, 0, maLigne.length());
    C'est quand même mieux non ?

  8. #8
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut
    Bonjour,

    Ouai c'est vrai que pour toutes les lignes, il y avait un caractère de trop mais je pensait au début que le retour chariot comptait pour 2 caractères ("\n"). Mais cela n'avait aucune espece d'importance, ce n'était pas cela qui génait.

    Une bonne pratique (pour plus tard...) : utilises une variable de type String
    Code :
    String maLigne = "Titre : " + titre + "\n"
    ecrivain.write(maLigne, 0, maLigne.length());
    Mais merci de m'avoir expliquer pourquoi cela ne fonctionnait pas avec la méthode write().
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  9. #9
    hlr
    hlr est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    Un bon développeur, quand il rencontre un problème, ne se contente pas de faire en sorte que ça marche, mais surtout pourquoi ça n'a pas marché.
    J'ai déjà rencontré plusieurs cas de ce type : un jour, un mec me montre son code (c'était du C, mais cela peut être extrapolé à n'importe quel langage) : il a déclaré une variable au début de sa fonction. Je me suis aperçu qu'il ne l'utilise jamais dans son code. Je lui ai demandé de l'enlever, mais il ne voulait pas... Il me disait que sans cette variable, son programme plantait Il n'a pas cherché à savoir pourquoi ça plantait, il faisait juste du forcing

  10. #10
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut
    Je ne sais pas pourquoi j'ai le droit à un jugement comme cela, j'ai cherché pourquoi cela ne fonctionnais pas, et je n'ai pas trouvé. Donc j'ai essayé un autre méthode, je ne voit pas ce qu' il y a de mal à ça.

    Et oui, je ne suis qu'un développeur débutant.

    Mais merci quand même.
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  11. #11
    hlr
    hlr est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par charlix Voir le message
    Je ne sais pas pourquoi j'ai le droit à un jugement comme cela, j'ai cherché pourquoi cela ne fonctionnais pas, et je n'ai pas trouvé. Donc j'ai essayé un autre méthode, je ne voit pas ce qu' il y a de mal à ça.

    Et oui, je ne suis qu'un développeur débutant.

    Mais merci quand même.
    Je ne te juge pas, je te donne les bonnes pratiques pour un développeur
    Je n'ai jamais dit que tu codais mal ou que tu fais tout de travers. J'ai juste dit qu'il faut que tu essaies de comprendre pourquoi ça n'a pas marché. Parce que dire "ça marche avec println et pas avec write" ne suffit pas. Si ça ne marche pas avec write, c'est qu'il y a une raison et il est encore temps d'essayer de le comprendre. Le jour où tu seras vraiment confronté à l'utilisation obligatoire de write (genre écrire des byte[]), là tu seras content

  12. #12
    Membre régulier Avatar de charlix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 285
    Points : 107
    Points
    107
    Par défaut
    Ouai j'avais bien compris mais étant donné que je suis en école d'informatique avec des projets plein le dos, donc lorsqu'il y a quelque chose qui fontionne pour ce je souhaite faire je passe un peu moins de temps à comprendre pourquoi cela ne fonctionne pas. C'est pour cela que je viens sur ce site : avoir des explications sur ce que je ne comprend pas lorsque je n'y arrive pas tout seul.

    Merci de ton aide.
    Il faut toujours avoir l'air d'être con si on veut pouvoir paraitre intelligent de temps en temps.

  13. #13
    hlr
    hlr est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 57
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par charlix Voir le message
    Ouai j'avais bien compris mais étant donné que je suis en école d'informatique avec des projets plein le dos, donc lorsqu'il y a quelque chose qui fontionne pour ce je souhaite faire je passe un peu moins de temps à comprendre pourquoi cela ne fonctionne pas. C'est pour cela que je viens sur ce site : avoir des explications sur ce que je ne comprend pas lorsque je n'y arrive pas tout seul.

    Merci de ton aide.
    "Etre dans une école" n'est pas la bonne excuse ;-) D'ailleurs, c'est le meilleur moment pour apprendre.
    Bon passons... l'essentiel c'est que tu aies compris le principe

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

Discussions similaires

  1. Ecrire dans un fichier .txt des vecteurs colonnes
    Par rouxmasta dans le forum MATLAB
    Réponses: 4
    Dernier message: 30/11/2009, 10h20
  2. Réponses: 1
    Dernier message: 28/03/2008, 15h49
  3. Ecrire dans un fichier .txt
    Par chabRRR dans le forum Langage
    Réponses: 3
    Dernier message: 13/03/2007, 19h30
  4. Ecrire dans un fichier .txt
    Par yinyann86 dans le forum Pascal
    Réponses: 17
    Dernier message: 24/11/2006, 13h36
  5. Ecrire dans un fichier txt sans en effacer le contenu
    Par cari dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/12/2005, 18h11

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