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 :

page blanche avec la méthode DoPost()


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut page blanche avec la méthode DoPost()
    bonjour,
    je développe une calculatrice en utilisant Tomcat 8.0 et eclipse (luna) Java EE, j'utilise le patern MVC, j'ai codé une jsp, une servlet et un bean !
    je sais quant il y a une action de l'utilisateur je doit utiliser la méthode DoPost().
    Voici mon code :
    1/ 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 language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Calculatrice</title>
    </head>
    <body>
     
    <header>Calculatrice</header>
    </br>
    <label>Nombre N°1</label>
    <input type="text" id="num1"></input>
    <div class="clearBoth"></div>
    <label>Nombre N°2</label>
    <input type="text" id="num2"></input>
    <div class="clearBoth"></div>
    <select name="operand">
      <option value="+">Addition</option>
      <option value="-">Soustraction</option>
      <option value="*">Multiplication</option>
      <option value="/">Division</option>
    <input type="submit" name="submit" value="OK" /> 
    </select>
     <form action="Process" method="post">
     <button type="button">Calculer</button> 
     </form>
    <label>Total</label>
    <input type="text" id="total"></input>
    <div class="clearBoth"></div>
    </body>
    </html>
    2/ servlet
    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
    69
    70
    71
    72
    package com.calculator.servlets;
     
    import java.io.IOException;
     
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.calculator.beans.Calculer;
     
    /**
     * Servlet implementation class calculator
     */
    @WebServlet("/calculator")
    public class Calculator extends HttpServlet {
    	private static final long serialVersionUID = 1L;
     
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Calculator() {
            super();
            // TODO Auto-generated constructor stub
        }
     
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		//this.getServletContext().getRequestDispatcher("/WEB-INF/calculator.jsp").forward(request, response);
    	}
     
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
     
     
    		String num1= request.getParameter("num1");
    	    String num2= request.getParameter("num2");
    	    request.getParameter("operand");
     
    	    double num11 = Double.valueOf(num1);
    	    double num22 = Double.valueOf(num2); 
     
    	    double total = 0;
    		String operand = "+";
    		Calculer Calculer = new Calculer(num11, num22, total, operand);
     
    	    Calculer.setNum1(num11);
    	    Calculer.setNum2(num22);
     
    	    request.setAttribute("calculer", Calculer);
    	    request.getParameter("operand");
     
    	    request.setAttribute("operand", operand);
    	    request.setAttribute("calculer", Calculer);
     
    	    request.setAttribute(operand, Calculer.gettotal());
     
    	    RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");
    	    dispatcher.forward(request, response);
     
     
    	}
     
    }
    3/ la bean

    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
    package com.calculator.beans;
     
    public class Calculer {
     
    	private double num1;
    	private double num2;
    	private String operand;
    	private double total;
     
     
    	public Calculer(double num1, double num2, double total, String operand) {
     
    	    this.num1 = num1;
    	    this.num2 = num2;
    	    this.total= total;
    	    this.operand = operand;
    	}
     
    	public double getNum1() {
    	    return num1;
    	}
     
    	public void setNum1(double num1) {
    	    this.num1 = num1;
    	}
     
    	public double getNum2() {
    	    return num2;
    	}
     
    	public void setNum2(double num2) {
    	    this.num2 = num2;
    	}
     
    	public double gettotal() {
    	    return num2;
    	}
     
    	public void settotal(double total) {
     
    	    if (operand.equals("+")) {
    	    total = num1 + num2;
    	    } else if (operand.equals("-")){
    	    total = num1 - num2;
    	    } else if (operand.equals("*")){
    	    total = num1 * num2;
    	    } else if (operand.equals("/")){
    	    total = num1 / num2;
    	    this.num2 = total;}
    	}
     
    	public String getOperand() {
    	    return operand;
    	}
     
    	public void setOperand(String operand) {
    	    this.operand = operand;
    	}
     
     
     
     
    }
    Le probléme c'est que j'affiche une page blanche donc je pence que j'ai oublier une ou de ligne de code DoPost() dans ma servlet ?

    J'aimerais que quelqu'un me reponde !

    Philippe

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Premièrement, base de HTML: les inputs doivent se trouver dans la balise form, sinon ils ne sont pas envoyés avec le submit.

    Ensuite, ton form pointe sur "Process" mais ta servlet est mappée sur "calculator".

    Enfin, le request.getRequestDispatcher prend un chemin relatif, donc il serait mieux de mettre un / pour exprimer que tu veux l'index de l'appli, pas juste un fichier index.jsp au même path que le mapping de la servlet. En l'occurence ici c'est la même chose, mais si demain tu mappe ta servlet sur /api/calculator, ça n'aura plus la même signification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");

  3. #3
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    merci, mais toujours une erreur,
    ce que j'ai fait :
    1/ j'ai codé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="Process" method="post">
    avant les champs de saisie.
    2/j'ai modifié comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/calculator.jsp");
    3/ j'ai corriger quelque erreur de codage dans le bean !!

    Maintenant j'ai une erreur 500 du tomcat 8.0.43
    voici l'erreur >>
    Etat HTTP 500 -

    type Rapport d''exception

    message

    description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

    exception

    java.lang.NullPointerException
    sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1017)
    java.lang.Double.parseDouble(Double.java:540)
    com.calculator.servlets.Calculator.doPost(Calculator.java:51)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/8.0.43.
    Apache Tomcat/8.0.43
    je crois que l'erreur fait référence au Doubleparse, mais aprés quelques recherche sur le net, je ne pense pas qu'il y a des erreurs de convertion
    mon code :
    1/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
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Calculatrice</title>
    </head>
    <body>
     
    <header>Calculatrice</header>
    </br>
    <form action="Process" method="post">
    <p><label>Nombre N°1</label>
    <input type="text" id="num1"></input>
    </p>
    <p><label>Nombre N°2</label>
    <input type="text" id="num2"></input>
    </p>
    <select name="operand">
      <option value="+">Addition</option>
      <option value="-">Soustraction</option>
      <option value="*">Multiplication</option>
      <option value="/">Division</option>
      <input type="submit"name="Submit" value="Soumettre"></p>
    </select>
    <p><label>Total</label>
    <input type="text" id="total"></input></p>
    </form>
    </body>
    </html>
    la servlet
    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
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		this.getServletContext().getRequestDispatcher("/WEB-INF/calculator.jsp").forward(request, response);
    	}
     
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
     
     
    		//doGet(request,response);
    		//response.sendRedirect("/WEB-INF/calculator.jsp");
    		String num1= request.getParameter("num1");
    	    String num2= request.getParameter("num2");
    	    request.getParameter("operand");
     
     
    	    double num11 = Double.parseDouble(num1); 
    	    double num22 = Double.parseDouble(num2);
    	   	double total = 0;
    		String operand = "+";
    		Calculer Calculer = new Calculer(num11, num22, total, operand);
     
    	    Calculer.setNum1(num11);
    	    Calculer.setNum2(num22);
     
    	    //request.setAttribute("calculer", Calculer);
    	    //request.getParameter("operand");
     
    	    //request.setAttribute("operand", operand);
    	    //request.setAttribute("calculer", Calculer);
     
    	    request.setAttribute(operand, Calculer.gettotal());
     
    	    RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/calculator.jsp");
    	    dispatcher.forward(request, response);
    	    //response.sendRedirect("/WEB-INF/calculator.jsp");
     
    	}
     
     
    }

    Je pence qu'il n'y a plus d'erreur dans mon bean

    Salutations
    philippe

  4. #4
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Bonjour,

    Est-ce que les données traitées par le parseDouble ne sont pas nulles ?
    ça peut expliquer l"exception.
    Par ailleurs, il est recommandé de toujours protéger ces conversions par des blocs try{ } catch {} pour soit remplacer la valeur défectueuse par une valeur par défaut (0 par exemple) soit indiquer que le traitement est en erreur ou redemander une saisie correcte.

Discussions similaires

  1. Page blanche avec certains navigateurs
    Par alband85 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 19/04/2011, 16h55
  2. [PHP 5.0] page blanche avec isset
    Par Jones24 dans le forum Langage
    Réponses: 6
    Dernier message: 04/05/2009, 06h24
  3. Page blanche avec le tutorial de kitpages
    Par Ericx_25 dans le forum MVC
    Réponses: 1
    Dernier message: 08/02/2007, 08h50
  4. Mon site affiche une page blanche avec Firefox : Pourquoi ? Que faire ?
    Par bnoir dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 25/10/2006, 16h22
  5. Impression de pages blanches avec mon imprimante.
    Par JavaAcro dans le forum Périphériques
    Réponses: 11
    Dernier message: 07/04/2006, 08h09

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