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 :

[JSP]Pb passage de paramètres formulaire


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 49
    Par défaut [JSP]Pb passage de paramètres formulaire
    Bonjour,

    Mes péripéties continuent...
    Mon but : afficher le contenu d'un fichier chargé par l'utilisateur dans la textarea de msg.jsp.
    Pour le chargement, j'utilise le package FileUpload.

    Voilà ma page importer.jsp :
    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
     
    <%@ page import="java.io.*" %>
     
    <script language="JavaScript">
        function choixURL(){
                var objForm = document.getElementById('formChargement');
                var boutOnClick=document.getElementById('cache').value;
                if(boutOnClick=="Annuler")
                        objForm.action = "index.jsp";
                return false;
        }
    </script>
     
    <html>
    <head>
    <title>Page de chargement du fichier</title>
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    </head>
    <body>
        <form name="formChargement" action="uploadFormulaire.jsp" method="post" enctype="multipart/form-data" OnSubmit="choixURL()" id="formChargement">
            Choisissez votre fichier dans l'arborescence : <input type="file" name="monFichier"><br/><br/>
            <input type="submit" value="Charger le fichier"/>
            <input type="submit" value="Annuler" onclick="document.getElementById('cache').value=this.value;"/>
            <input type='hidden' id='cache'/>
        </form>
     
        <%
            String fichier = request.getParameter("monFichier");
            pageContext.getSession().setAttribute("fichier", fichier);
        %>
     
    </body>
    </html>
    et la page appelée pour traiter les informations du formulaire : uploadFormulaire.jsp
    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
     
    <%@ page import="org.apache.commons.fileupload.*, java.util.List, java.io.File, java.util.Iterator" %>
    <%
       String monFic = (String)request.getParameter("monFichier");
       String vide="";
            boolean isMultipart = FileUpload.isMultipartContent(request);
            if(!isMultipart){
                request.setAttribute("msg", "Request was not multipart!");
                request.getRequestDispatcher("msg.jsp").forward(request, response);
                return;
            }
            DiskFileUpload upload = new DiskFileUpload();
            List items = upload.parseRequest(request);
            Iterator itr = items.iterator();
            while(itr.hasNext()){
                FileItem item = (FileItem) itr.next();
                if(item.isFormField()) {
                    String fieldName = item.getFieldName();
                    if(fieldName.equals("name"))
                        request.setAttribute("msg", "Thank You: " + item.getString());
                } else {
                    File fullFile = new File(item.getName());
                    File savedFile = new File(getServletContext().getRealPath("/")+"/tmp/", fullFile.getName());
                    item.write(savedFile);
                }
            }
            request.getRequestDispatcher("msg.jsp").forward(request, response);
        %>
    et la page msg.jsp :
    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
     
    <%@ page import="java.io.*" %>
    <%
        String msg = (String)request.getAttribute("msg");
        if(msg != null) {
            out.println("<font size=+1>" + msg + "</font><br/>");
        }
    %>
        <textarea readonly cols="50" rows="20">
            test de la page
             <%
                String monFichier = (String)getServletContext().getSession().getAttribute("fichier");
                try{
                    BufferedReader in = new BufferedReader (new FileReader (monFichier));
                    String str;
                    while ((str=in.readLine()) != null){
                        out.println(str);
                    }
                    in.close();
                } catch (IOException e){
                    out.println("Erreur d'ouverture du fichier");
                }
             %>
        </textarea>
        Cliquez <a href="importer.jsp">ici</a> pour retourner à la page de chargement de fichier.

    En lisant le forum, j'ai essayé de passer le nom du fichier dans un paramètre de session mais visiblement, cela ne fonctionne pas non plus...

    Bien sûr, à l'éxecution, j'ai une JasperException de la part de Tomcat.

    Si vous voyez où ça cloche.
    A +
    Arnapou

  2. #2
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Je pense que tu n'as pas bien saisie le principe des JSP/Servlet.

    Une Jsp ne doit pas comporter autant de traitement. Ce genre de chose est réservé à la servlet.

    Pour afficher le contenu d'un fichier dans un textarea, il faut que ta JSP importer.jsp fasse appel à une servlet qui va se charger de lire le contenu du fichier chargé par l'utilisateur, puis le stocker dans l'objet request pour le renvoyer ver la jsp msg.jsp.
    L'objet HTTPSession ne doit conserver que peu d'information.
    Cette objet est persistant en memoire serveur durant tout le temps ou l'utilisateur est connecté. Il ne faut pas qu'il soit trop lourd (en terme d'espace mémoire).
    Cette dernière se chargera d'affichier le message dans le textaréa.

    Le chargement du fichier peut se faire à partir de la JSP importer.jsp.

    J'espere que cela t'aidera, si tu as des questions n'hesite pas!

  3. #3
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 49
    Par défaut
    Non, effectivement... pour moi servlet et JSP même combat... surtout qu'à la compilation une JSP devient une servlet ... alors...

    Mais, si je fais une servlet, qu'est-ce qui va changer dans le code... j'ai bien envie de faire un copier coller de l'un à l'autre... est-ce que je peux générer juste un petit bout d'HTML avec la servlet ? tous les exemples que j'ai pu lire contiennent les balises de début de page HTML <html> <body> et cie...

    A +
    Arnapou

  4. #4
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Un modele bien connu permet en fait de faire la distinction entre la JSP et Servlet... MVC (2).

    Je suis d'accord avec toi a terme les deux seront servlet.
    Par contre, tu remarqueras qu'il est plus aisé de codé, et maintenir, du code dans un servlet que dans un JSP.
    Dans la JSP, cela devient vite confu entre le code HTML et les scriptlets..

    Pour revenir au modele MVC : Modele Vue Controler.
    Il existe aussi le modele MVC2 unifiant le controler.
    Un framework assez célébre se base sur le modele MVC2 : Struts

    La jsp doit être utilisée pour tout les aspects IHM, on doit y trouvé essentiellement du code HTML, Javascript, eventuellement (mais le moins possible ) du code Java.
    La servlet s'apparete au controler. Elle réceptionne les requetes du client. Elle se charge d'appeler les services qu'il lui sont mis à disposition preparer les données et les revoyer à la JSP .

    En respectant se genre de concept tu obtiens une separation des couches et d'autres choses encore que je ne vais pas détailler ici.

    J'espere que cela te permettra de faire une différence en les JSP et servlets.
    Si tu as des questions n'hesite pas.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 49
    Par défaut
    Merci... oui effectivement, il y a une différence théorique... je suis tout à fait d'accord.

    Je vais essayer d'écrire la servlet effectuant le traitement du fichier, sauf que mon problème va être récurrent.. je n'arrive pas à récupérer le nom d fichier chargé... alors comment faire depuis ma servlet ?

    A +
    Arnapou

  6. #6
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    En utilisant FileUpload ... cela ne devrait pas poser de problème pour récupérer le nom des fichiers.

    Est ce que tu pourrais montrer a trace de l'exception levée?

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/08/2007, 16h07
  2. [JSP-Servlet] Passage de paramètre d'un servlet à lui même
    Par Invité dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 02/05/2007, 10h12
  3. [jsp] passage de paramètres impossible
    Par Raylemon dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 18/03/2005, 20h45
  4. [JSP] Problème passage paramètre
    Par besco dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 13/09/2004, 10h15
  5. [jsp][servlet]passage de paramètre entre deux frames
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/06/2004, 11h14

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