Page d'erreur JEE

Résolu
Bonjour,
j'ai un formulaire que je dois remplir, et y a un champ pour inserer l'age
je veux que quand le user insert l'age l'exception numberformatexception se lance
et une page d'ereur s'affiche
j'ai créer une page.html pour afficher l'erreur
dans we.xml j'ai ajouter les lignes suivantes

<error-page>
<exception-type>java.lang.NumberFormatException</exception-type>
<location>/WEB-INF/numbererror.html</location>
</error-page>
et dans ma servlet j'ai met :

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, NumberFormatException
MAis pourtant ça ne marche pas
ma page d'erreur ne s'affiche pas

3 réponses

  1. Contributeur
    Et si tu ne throw pas l'erreur, et que tu en génère une, quelle erreur apparaît dans la log Tomcat?
    1. j'utilise pas tomcat, je travail avec netbeans
    2. Contributeur
      Netbeans fait aussi serveur d'application?
    3. Oui il utilise glassfish
    4. Est ce que je dois supprimer le throw number... et je fais un catch à la fin du programme ?
    5. Contributeur
      Oui un try catch.
  2. Contributeur
    OK.

    Mais Glassfish doit aussi avoir des logs non? Sinon je suppose qu'à l'exécution cela se fait toujours dans Netbeans, donc autant afficher l'erreur en direct.

    Comme ça tu es sûr de quelle exception est levée.
    1. oui il contient un dossier de log aussi mais je l'ai trouvé vide comme si l'exception ne se lève pas : voilà mon catch : catch (NumberFormatException e ) { log("number required");}
    2. Contributeur
      Justement, je suppose que tu exécutes ta servlet dans Netbeans donc il doit t'afficher les erreurs en direct non?

      Je pensais plutôt à un try catch comme ça :

      try
      {
      ....
      }
      catch(Exception e)
      {
      System.out.println("Exception : "+e.toString());
      }
    3. c'est fait mais je ne vois rien, meme si je saisi une chaine de caractère à la place d1 entier aucuen exception ne se lève, amis je ne vois pas le résultat!
    4. je te montre mes codes ? comme ça vous allez bien comprendre de quoi il s'agit, ce sont juste quelques lignes pour tester
    5. Contributeur
      Bah il y a un souci avant cela alors. La seule solution c'est de passer en mode Debug et de mettre des affichages partout pour comprendre où ça merde.

      Pour ceux qui comprennent les Servlet, pourquoi ne pas mettre le code ;-)
  3. voilà ma servlet :
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException, NumberFormatException {
    processRequest(request, response);
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
    
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet Hello</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>enregistrement de vos coordonnées effectués </h1>");
    out.println("Bonjour " + request.getParameter("civ") + " "+ request.getParameter("nom") + " "+ request.getParameter("pren") +" vous avez "+ Integer.parseInt(request.getParameter("age")) + " ");
    out.println("</body>");
    out.println("</html>");
    
    }
    catch (NumberFormatException e ) { System.out.println("Exception : "+e.toString()); }
    // catch (NumberFormatException e ) { log("number required");}
    finally {
    out.close();
    }
    } 


    voilà mon web.xml :

    servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>Package1.Hello</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
    </servlet-mapping>
    <error-page>
    <exception-type>java.lang.NumberFormatException</exception-type>
    <location>/WEB-INF/numbererror.html</location>
    </error-page> 
    


    voilà ma page principale :
    <body>
    <h1>Enregisterment de vos coordonnés!</h1>
    <form action="Hello" method="get">
    <table>
    <tr><td>Civilité</td>
    <td>
    <select name="civ">
    <option >Monsieur</option>
    <option >Madame</option>
    <option >Mademoiselle</option>
    </select>
    </td>
    </tr>
    <tr><td>Nom</td><td><input name="nom"/></td></tr>
    <tr><td>Prenom</td><td><input name="pren"/></td></tr>
    <tr><td>Age</td><td><input name="age"/></td></tr>
    <tr><td><input type="submit" value ="envoyé" name="ok"></td><td><input type="reset" value ="Annuler" name="annuler"></td></tr>
    </table>
    </form>
    </body> 
    


    et puis la page d'erruer c'est une simple page html