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 écrit sur fichier texte


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut Servlet écrit sur fichier texte
    Bonjour,

    je souhaite que la validation d'un formulaire se traduise par l'ajout d'une ligne dans un fichier texte et non par la génération d'une page html.

    Je débute à peine dans les servlets, je ne sais que générer des pages html

    dans ma servlet en faisant

    PrintWriter out = req.getWriter();

    out.println("<html>...") etc....etc...


    C'est tout ce que je sais faire.

    Donc, la requête ci-dessous me parait très problématique...Surtout que je ne suis pas très bon en java non plus.

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Bonjour,

    est ce que ce code DOIT m'écrire sur un fichier existant "edt.txt" et placé à la racine du projet ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    	public void doGet(HttpServletRequest req, HttpServletResponse res)
    	throws ServletException, IOException 
    	{  
    		res.setContentType("plain/text");
     
    		FileWriter out = new FileWriter("edt.txt");
     
    	  	out.write("Adresse IP du client : " +req.getRemoteAddr());
     
    		out.write("Navigateur du client :" + req.getHeader("user-agent"));

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pour écrire dans un fichier, il faut utiliser le package java.io et plus particulièrement java.io.File.

    Par exemple, pour créer un fichier et écrire on ferait
    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
     
    ...
    File file = null;
    FileWriter writer = null;
    try
    {
       file = new File("c:\\Temp\\monFichier.txt");
       writer = new FileWriter(file, true);
       writer.write("une ligne");
    }
    catch (Exception e)
    {
    }
    finally
    {
       if (writer != null) writer.close();
       if (file != null) file.close();
    }
    ...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Bonsoir,

    merci pour cette réponse , j'ai copié collé ce code dans ma servlet dans ma méthode doGet mais ça ne me crée pas de fichier. C'est peut être que j'ai mal écris le path. c://monFichier.txt, là c'est pour qu'il me le crée sur le disque.

    Mais en fait, j'aimerais qu'il me crée le fichier à la racine de mon projet eclipse. Quel path faut il mettre dans ce cas ?

    Merci d'avance

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Euh, j'ai pas tout compris...
    "à la racine de ton projet Eclipse", c'est quoi pour toi :
    - effectivement la racine de l'installation d'Eclipse
    - la racine de ton projet web (qui, une fois déployé sur un serveur, ne sera plus lié à Eclipse)

    Que veux-tu pouvoir faire de ce fichier au juste, l'afficher dans une page JSP ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Euh, j'ai pas tout compris...
    "à la racine de ton projet Eclipse", c'est quoi pour toi :
    - effectivement la racine de l'installation d'Eclipse
    - la racine de ton projet web (qui, une fois déployé sur un serveur, ne sera plus lié à Eclipse)

    Que veux-tu pouvoir faire de ce fichier au juste, l'afficher dans une page JSP ?

    Bonjour,

    oui tout à fait Obutterlin; comment fait on avec la méthode getRealPath() pour dire que l'on veut que le fichier soit à la racine du projet web qui une fois déployé ne sera plus lié à eclipse. En fait, la méthode getRealPath est déprécié de ce que me dit eclipse. Quelle est la méthode appropriée stp?


    Ce que je veux faire ?

    j'ai un formulaire de gestion de séance de cours avec le libellé, dateCM,durée cours etc...

    Et j'aimerais que chaque validation du formulaire ajoute une ligne adéquate au fichier.txt.


    Mon code ajoute bien une ligne mais à chaque validation du formulaire, cette ligne est remplacé par la nouvelle validation.

    ça fait que mon fichier edt.txt, contient à chaque fois une seule ligne.

    Après cela, je dois crée une deuxième servlet qui affiche la liste des séances dans leur ordre d'apparition sur le fichier.

    voici mon code qui :

    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
     
    ublic class FormulaireServlet extends HttpServlet{
     
     
    	protected void doGet(HttpServletRequest req, HttpServletResponse res)
    	throws ServletException {
     
    		res.setContentType("text/plain");
    		PrintWriter out=null;
    		try {
    			out = res.getWriter();
    		} catch (IOException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
     
    		BufferedWriter outfic;
    		try {
     
    			String path = req.getRealPath("/");
    			System.out.println(path);
    			path = "C:\\Users\\monNom\\workspace2\\servletTp3\\form.txt";
    			System.out.println(path);
    			outfic = new BufferedWriter
    					(new FileWriter(path));
    		String libelle = req.getParameter("libelle");
    		String dateCM = req.getParameter("dateCM");
    		String debutCM = req.getParameter("debutCM");
    		String dureeCM = req.getParameter("dureeCM");
    		String dateTp = req.getParameter("dateTp");
    		String debutTp = req.getParameter("debutTp");
    		String dureeTp = req.getParameter("dureeTp");
     
    		outfic.write(libelle +";");
    		outfic.write(dateCM +";");
    		outfic.write(debutCM +";");
    		outfic.write(dureeCM +";");
    	    outfic.write(dateTp +";");
    		outfic.write(debutTp +";");
    		outfic.write(dureeTp);
    			outfic.close();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		//out.print(libelle);
     
     
     
     
    	}
    }

    Et là, c'est ma deuxième servlet qui devrait afficher la liste des séances dans leur ordre d'apparition dans le fichier :

    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
     
    public class FormulaireServlet2 extends HttpServlet  {
     
    	public void doGet(HttpServletRequest req, HttpServletResponse res)throws IOException,
    	ServletException{
     
    		res.setContentType("text/html");
    		PrintWriter out = res.getWriter();
     
     
    String path = "C:\\Users\\Bouhlel Halem\\workspace2\\servletTp3\\form.txt";
    		BufferedReader infic = new BufferedReader
    			  (new FileReader(path));
    		String ligne = infic.readLine();
    		out.println(ligne);
    		}}
    Merci pour toute aide.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 51
    Par défaut
    Regarde dans la javadoc, il y a un constructeur pour FileWriter qui accepte un deuxième paramètre ( booléen ), qui doit valloir vrai si on veut ajouter des données au fichier, ou faux si on veut écraser. Mais là par contre ça n'a rien de spécifique à JEE, ça fait parti des bases de java.

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pour récupérer la racine dans ta servlet, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String root = request.getSession().getServletContext().getRealPath("/");
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 136
    Par défaut
    Citation Envoyé par Askerat Voir le message
    Regarde dans la javadoc, il y a un constructeur pour FileWriter qui accepte un deuxième paramètre ( booléen ), qui doit valloir vrai si on veut ajouter des données au fichier, ou faux si on veut écraser. Mais là par contre ça n'a rien de spécifique à JEE, ça fait parti des bases de java.
    Exactement, c'est ce que j'ai fait.

    J'ai rajouté à ce code : fileWriter(nomFichier,true).

    Et ça ne marche toujours pas;

    Quelqu'un saurait il pourquoi s'il vous plaît ?


    Merci d'avance

    ++

  10. #10
    Invité de passage
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1
    Par défaut
    Bonjour,

    Si vous avez une réponse pour ce TP, je suis intéressée.

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 31
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Pourtant ce code fonctionne
    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
     
    package com.test;
     
    import java.io.FileWriter;
    import java.util.Date;
     
    public class Test
    {
     
        /**
         * @param args
         */
        public static void main(String[] args)
        {
            FileWriter writer = null;
            try
            {
                writer = new FileWriter("c:\\Temp\\FichierTest.txt", true);
                writer.write("ligne de test à " + new Date());
                writer.close();
            }
            catch (Exception e)
            {
                System.out.println(e.getMessage());
            }
        }
     
    }
    Et dans ce cas comment empêcher le créer le fichier s'il existe déjà?

  12. #12
    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
    Citation Envoyé par Makelzauvic Voir le message
    Et dans ce cas comment empêcher le créer le fichier s'il existe déjà?
    On peut tester l'existence du fichier simplement avant. Ou utiliser les options proposées par les méthodes de Files
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Files.newBufferedWriter(path, StandardOpenOption.CREATE_NEW, StandardOpenOption.APPEND);
    causera une exception si le fichier existe déjà, mais du coup, pas très cohérent avec l'emploi du append.
    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.

  13. #13
    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
    Citation Envoyé par dev_est Voir le message
    Bonjour,

    Si vous avez une réponse pour ce TP, je suis intéressée.
    Salut,

    Si tu as des questions précises on pourra y répondre. Mais on ne fournit pas sur ce forum des solutions complètes de TP.
    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.

Discussions similaires

  1. [VBA-E] Calcul sur fichiers Texte
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/02/2007, 14h37
  2. Réponses: 2
    Dernier message: 29/05/2006, 09h54
  3. [VB.NET]Problème de lecture et écriture sur fichier texte
    Par zouhib dans le forum Windows Forms
    Réponses: 25
    Dernier message: 23/05/2006, 15h30
  4. Réponses: 11
    Dernier message: 17/05/2006, 10h48
  5. problème sur fichier texte
    Par vivelesgnous dans le forum Général Python
    Réponses: 6
    Dernier message: 26/04/2006, 20h08

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