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 :

probleme Exception NullpointeurException


Sujet :

Servlets/JSP Java

  1. #1
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut probleme Exception NullpointeurException
    slt je suis encore nouveau voilà je désire retourne sur ma page jsp une liste ceci depuis ma servlet mais j'ai plutôt une nullpointerException qui est léve

    bref voici la structure de ma jsp 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
    25
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>exemple</title>
        </head>
        <body>
            <form name="myform" method="post" action="serform">
            <%@ page import="java.util.ArrayList"%>
            <%
            ArrayList<String> liste = (ArrayList) request.getAttribute("donnée");
            %>
     
            <select name="selection">
            <%
                for (int i=0; i<liste.size(); i++)
                {
                        String item=(String) liste.get(i) ;
            %>
                   <option value="<%=item%>"><%=item%></option>
            <%
                }
            %>
            </select>
        </body>
    </html>
    voici celui de ma servlet 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
    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
    public class serform extends HttpServlet {
        List<String> liste;
        List<Element> doc;
        public serform(){
            liste=new ArrayList<String>();
        }
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
                entree(request);
                sortie(response);
                ServletContext context = getServletContext();
                RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");
                dispatcher.forward(request, response);
            }
            catch(IOException esc){
                   esc.printStackTrace();
            }
             catch(Exception ex){
                 ex.printStackTrace();
             }
            finally {
                out.close();
            }
        } 
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
     
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
           processRequest(request, response);
        } 
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
     
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
        public void entree(HttpServletRequest request)throws IOException, JDOMException{
            nom=request.getParameter("nom");
            prenom=request.getParameter("prenom");
            SAXBuilder sxb=new SAXBuilder();
            Document document=sxb.build(new File("dat.xml"));
            Element donnees=document.getRootElement();
            doc =donnees.getChildren("donne");
            for(Element donnee:doc){
              liste.add((String)donnee.getChild("nom").getTextTrim());
               }
            request.setAttribute("donnée",liste);
        }
        public void sortie(HttpServletResponse response)throws IOException{
     
    }
    que faire?
    merci pour toute aide

  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
    Par défaut
    T'as regardé attentivement les traces? le code en cause du nullpointer est generalement toujours indiqué. si t'as du mal à interpreter les traces tu nous les pastes.

  3. #3
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut probleme Exception NullpointeurException
    slt voici la trace

    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
     Stacktrace:
    	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    cause mère
     
    java.lang.NullPointerException
    	org.apache.jsp.index_jsp._jspService(index_jsp.java:86)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Ta JSP a été transformé en Servlet org.apache.jsp.index_jsp puis compilée, le tout par Tomcat.

    Va dans le sous-répertoire work de Tomcat (ou ton répertoire de déploiement) pour trouver le fichier source. Le problème se situe à la ligne 86 de celui-ci.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    Bonjour

    juste un conseil pour les conventions de nommages : ne mets pas d'accents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        request.setAttribute("donnée",liste);
    enlève l'accent dans ta servlet et dans ta JSP

    Autre point je n'ai pas vu d'appel à ta méthode serform() => potentiellement ta liste n'est pas initialisée

  6. #6
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut probleme Exception NullpointeurException
    slt avant merci pour la notion de formatage.voilà est ce du à un problème instantiation mom nullpointerexception sa j'endoute car voici à nouveau ma servlet 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
    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
    public class serform extends HttpServlet {
        List<String> liste=new ArrayList<String>();
        List<Element> doc;
        public serform(){
        }
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
                entree(request);
                sortie(response);
                ServletContext context = getServletContext();
                RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");
                dispatcher.forward(request, response);
            }
            catch(IOException esc){
                   esc.printStackTrace();
            }
             catch(Exception ex){
                 ex.printStackTrace();
             }
            finally {
                out.close();
            }
        } 
        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
     
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
           processRequest(request, response);
        } 
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
     
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
        public void entree(HttpServletRequest request)throws IOException, JDOMException{
            nom=request.getParameter("nom");
            prenom=request.getParameter("prenom");
            SAXBuilder sxb=new SAXBuilder();
            Document document=sxb.build(new File("dat.xml"));
            Element donnees=document.getRootElement();
            doc =donnees.getChildren("donne");
            for(Element donnee:doc){
              liste.add((String)donnee.getChild("nom").getTextTrim());
               }
            request.setAttribute("donnée",liste);
        }
        public void sortie(HttpServletResponse response)throws IOException{
    }
    }
    pourtant l'exception est toujour léve.
    est moi qui m'y prend mal,ou est ce un problème de comprehension?

  7. #7
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    je sais pas mais je vois plein de choses qui ne vont pas ou bien tu ne les a pas poster
    Dans la méthode entree
    1) où sont définis tes variables nom,prénom ,doc ?
    2) le nom de la classe doit commencer par une majuscule
    3)
    est-ce que tu es sûr de ne pas avoir d'erreur ici ? ton fichier est bien trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Document document=sxb.build(new File("dat.xml"));
    4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Document document=sxb.build(new File("dat.xml"));
     
     doc =donnees.getChildren("donne");
            for(Element donnee:doc){
              liste.add((String)donnee.getChild("nom").getTextTrim());
               }
    une fois tu utilises donnees
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Element donnees=document.getRootElement();
    et une autre fois donnee

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(Element donnee:doc){
              liste.add((String)donnee.getChild("nom").getTextTrim());
               }
    soit tu as effectivement omis de mettre tout ce code et dans ce cas là c'est difficile de t'aider
    soit tu as des erreurs de compilations
    tu utilises quoi pour développer ?

  8. #8
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Je rajouterai qu'une Servlet ne devrait pas avoir des attributs relatifs à une requête/session/etc.

    Le content-type devrait être défini par la JSP et non la servlet.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  9. #9
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut probleme Exception NullpointeurException
    slt excusé moi oui les variables nom et prénom n'était pas définit dans ma servlet de même que pour l'incohérence de certain variable voici le code modifié

    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
    public class Serform extends HttpServlet {
        List<String> liste=new ArrayList<String>();
        Document document;
        List<Element> doc;
        public serform(){
        }
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
             PrintWriter out = response.getWriter();
            try {
                entree(request);
                sortie(response);
                ServletContext context = getServletContext();
                RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");
                dispatcher.forward(request, response);
            }
            catch(IOException esc){
                   int sc=Integer.parseInt(esc.getCause().toString());
                   response.sendError(sc,"veuiller verifier vos entrées/sorties");
                   esc.printStackTrace();
            }
             catch(Exception ex){
                 ex.printStackTrace();
             }
            finally {
                out.close();
            }
        } 
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
         processRequest(request, response);
        } 
     
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        //    processRequest(request, response);
        }
     
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
        public void entree(HttpServletRequest request)throws IOException, JDOMException{
              String textfile="dat.xml";
              SAXBuilder sxb=new SAXBuilder();
              document=sxb.build(new File(textfile));
              doc =document.getRootElement().getChildren();
              for(Element courant:doc){
              liste.add((String)courant.getChild("nom").getTextTrim());
               }
               request.setAttribute("donnees",liste);
        }
        public void sortie(HttpServletResponse response)throws IOException{
            PrintWriter out = response.getWriter();
            out.println("<script>alert('voici la taille du doc="+doc.size()+"');</script>");
        }
     
    }
    de même je suis comprend bien ce donc dit Nemek quand t' il dit qu'une Servlet ne devrait pas avoir des attributs relatifs à une requête/session/etc.
    Le content-type devrait être défini par la JSP et non la servlet.

  10. #10
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Ta servlet possède trois attributs (liste, document, doc) que tu modifies à chaque requête. Hors il est fort probable que la même instance de ta servlet soit utilisée pour servir plusieurs requêtes, je t'explique pas les effets de bords !

    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("text/html;charset=UTF-8");
    Tu définis le content type alors que tu vas peut-être envoyé un page d'erreur ou autre chose.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  11. #11
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    En complément de ce que t'as dit Nemek, tu devrais obtenir
    quelque chose comme ça (NB : ce code est non testé)
    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
     
    public class Serform extends HttpServlet {
     
     
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
             PrintWriter out = response.getWriter();
            try {
                entree(request);
                sortie(response);
                ServletContext context = getServletContext();
                RequestDispatcher dispatcher = context.getRequestDispatcher("/index.jsp");
                dispatcher.forward(request, response);
            }
            catch(IOException esc){
                   int sc=Integer.parseInt(esc.getCause().toString());
                   response.sendError(sc,"veuiller verifier vos entrées/sorties");
                   esc.printStackTrace();
            }
             catch(Exception ex){
                 ex.printStackTrace();
             }
            finally {
                out.close();
            }
        } 
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
         processRequest(request, response);
        } 
     
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }
     
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>
     
        public void entree(HttpServletRequest request)throws IOException, JDOMException{
              List<String> liste=new ArrayList<String>();
    		  Document document;
    		  List<Element> doc;
    		  String textfile="dat.xml";
              SAXBuilder sxb=new SAXBuilder();
              document=sxb.build(new File(textfile));
              if (document != null){
    			doc =document.getRootElement().getChildren();
                 if (doc != null){
    				 for(Element courant:doc){
    					liste.add((String)courant.getChild("nom").getTextTrim());
    				}
    				request.setAttribute("donnees",liste);
    			 }
    		  }
     
        }
        public void sortie(HttpServletResponse response)throws IOException{
            PrintWriter out = response.getWriter();
            out.println("<script>alert('voici la taille du doc="+doc.size()+"');</script>");
        }
     
    }
    et dans ta 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
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>exemple</title>
        </head>
        <body>
            <form name="myform" method="post" action="serform">
            <%@ page import="java.util.ArrayList"%>
    		<%@ page import="java.util.List"%>
            <%
            List<String> liste = (ArrayList) request.getAttribute("donnees");
            %>
    		<%if (liste != null){%>
    			<select name="selection">
    			<%
                                    for (int i=0; i<liste.size(); i++)
                                    {
                                                    String item=(String) liste.get(i) ;
                            %>
    				   <option value="<%=item%>"><%=item%></option>
    			<%
                                    }
                            %>
    			</select>
    		<%}%>
        </body>
    </html>

    dis nous si tu as toujours ton problème

  12. #12
    Membre très actif
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Par défaut probleme Exception NullpointeurException
    slt isma4 et excuse moi pour l'absence mais voila le code que tu ma propose compile toutefois il ne me retourne rien à l'écran
    que faire car la je ne comprend plus rien

  13. #13
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    Si ça n'affiche rien c'est que tu dois avoir une erreur de compilation dans ta JSP ou que ta servlet ne renvois rien
    est-ce que tu as des logs à nous montrer au moment où tu appelles ta page ?

Discussions similaires

  1. Probleme exception JCChartLegendManager
    Par L4BiN dans le forum 2D
    Réponses: 0
    Dernier message: 11/06/2010, 15h38
  2. probleme exception sql exception
    Par yassin-59 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 28/04/2010, 16h42
  3. probleme :exception java.io.FileNotFoundException
    Par nonna dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 12/05/2008, 12h50
  4. probleme exception database?
    Par soror dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/06/2007, 13h23
  5. probleme exception INVALID_PATH
    Par scarpat dans le forum SQL
    Réponses: 4
    Dernier message: 23/11/2006, 21h58

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