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 :

[JAVA EE] TP Calculatrice


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    [JAVA EE] TP Calculatrice
    Bonsoir a tous et merci d'avance.

    je suis dans l'impasse depuis plusieurs jour, je début dans la programmation et encore loin de maîtriser.

    je réalise actuellement le TP du cour sur java EE

    J'ai déjà réaliser me semble t'il 90% du projet mais je me retrouve bloquer a l'envoi de ma variable message sur calculatrice.jsp .

    Pour mon servlet j'ai fais ceci:

    package com.octest.servlets;

    Code Java :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
    package com.octest.servlets;
     
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
     
    @WebServlet("/CalcServlet")
    public class CalcServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
     
     
        public CalcServlet() {
            super();
     
        }
     
     
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp").forward(request, response); 
        }
     
     
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                    Calcul calcul = new Calcul(
                    Integer.parseInt(request.getParameter("operande1")),
                    request.getParameter("operateur"),
                    Integer.parseInt(request.getParameter("operande2")));
     
            request.setAttribute("calcul", calcul);
            this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp").forward(request, response);
        }
     
    }


    Ensuite Pour ma .JSP

    Code JSP :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"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Calculatrice</title>
        </head>
        <body>
     
     
            <p>
                 $[calcul.message]
            </p>
     
            <form method="post" action="">
                <input name ="operande1" type="number" size=3/>
                <select name="operateur" size="1">
                    <option value="+">+</option>
                    <option value="-">-</option>
                    <option value="x">x</option>
                    <option value="/">/</option>
                </select>
                <input name ="operande2" type="number" size=3/>
                <input type="submit" value="=" />
            </form>
            <p>
     
            </p>
        </body>
    </html>


    J'ai aussi à réaliser un classe pour exécuter les calculs et l'affichage de la réponse.

    Code Java :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
    package com.octest.servlets;
     
    public class Calcul {
     
         int operande1 = 0;
         int operande2 = 0;
         int resultat;
         String operateur;
         String message;
         String message1;
         String message2;
     
        {
     
        if ( (operande1 == 0) && (operande2 == 0) ) {
            message1 = ("Veillez entrez une valeur");
            message = new String(message1); 
        }
        else {
             message2 = ("Bonjour, vous avez calculé" +  operande1 + operateur +  operande2 + " = "  + resultat);
     
             message = new String(message2); 
             }
        }
     
        public Calcul (int operande1, String operateur, int operande2) {
            this.operande1 = operande1;
            this.operateur = operateur;
            this.operande2 = operande2;
     
            if (this.operateur.equals("+")) {
                this.setResultat(this.operande1 + this.operande2);
            }
            else if (this.operateur.equals("-")) {
                this.setResultat(this.operande1 - this.operande2);
            }
            else if (this.operateur.equals("x")) {
                this.setResultat(this.operande1 * this.operande2);
            }
            else this.setResultat(this.operande1 / this.operande2);
        }
     
        public int getResultat() {
            return resultat;
        }
        public String getMessage() {
            return message;
            }
     
        public void setResultat(int resultat) {
            this.resultat = resultat;
        }
        public void setMessage(String message) {
            this.message = message;
        }
    }


    C'est sur cette page qu’apparaît m'as seul erreur qui me dis "The value of the local variable is not used."

    Je vous joint aussi mon index.html et mon web.xml car je ne suis toujours pas sur de moi et il est possible que le problème vienne de la

    index.html

    Code HTML :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Calculatrice</title>
        </head>
     
        <body>
     
        </body>
    </html>

    Ainsi que mon web.xml

    Code XML :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns<img src="images/smilies/icon_mad.gif" border="0" alt="" title=":x" class="inlineimg" />si="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
      <servlet>
        <servlet-name>CalcServlet</servlet-name>
        <servlet-class>com.octest.servlets.CalcServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>CalcServlet</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    </web-app>


    Et pour finir une capture d’écran de la hiérarchie de mes dossier ainsi que l’aperçu de la compilation du programe et les erreurs.





    Comme vous pouvez le remarquer ma variable message n'est pas envoyer a la jsp , lorsque je revois des information dans mes formulaire la page ce réactualise sans modification par contre , lorsque j'envoi sans information l'erreur suivante sur mon Servlet CalcServlet ligne 29 revienne et m'indique que les information ne communique pas entre les différents page enfin je dis ça mais as mon niveau de novice c'est comme si je disais rien mdr.
    Y a t'il une facon d'inclure la classe dans la ?
    Bref comme vous l’aurait compris cela dépasse un peux mes compétence pour le moment et je suis sur presque sur que l'erreur vas me sauter au yeux une fois le doigt dessus.
    je vous remercie encore pour votre attention et vous souhaite une bonne continuation dans l'attente d'une solution.

  2. #2
    Futur Membre du Club
    Modification probable
    je me suis dis que j'utilisais trop de variables dans ma condition if dans ma classe calcul et l'ai simplifiée, sans changement et sans être sûr de son efficacité, du coup peut-être que cette forme est plus probante.

    Classe java calcul.java

    Code Java :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
    public class Calcul {
     
    	int operande1 = 0;
    	int operande2 = 0;
    	int resultat;
    	String operateur;
    	String message;
     
    	{
     
    		if ((operande1 == 0) && (operande2 == 0)) {
    			 message = ("Veillez entrez une valeur");
     
    		} else {
    			message = ("Bonjour, vous avez calculé" + operande1 + operateur + operande2 + " = " + resultat);
     
    		}
     
    	}
     
    	public Calcul(int operande1, String operateur, int operande2) {
    		this.operande1 = operande1;
    		this.operateur = operateur;
    		this.operande2 = operande2;
     
    		if (this.operateur.equals("+")) {
    			this.setResultat(this.operande1 + this.operande2);
    		} else if (this.operateur.equals("-")) {
    			this.setResultat(this.operande1 - this.operande2);
    		} else if (this.operateur.equals("x")) {
    			this.setResultat(this.operande1 * this.operande2);
    		} else
    			this.setResultat(this.operande1 / this.operande2);
    	}
     
    	public int getResultat() {
    		return resultat;
    	}
     
    	public String getMessage() {
    		return message;
    	}
     
    	public void setResultat(int resultat) {
    		this.resultat = resultat;
    	}
     
    	public void setMessage(String message) {
    		this.message = message;
    	}
    }

  3. #3
    Membre chevronné
    Salut,
    dans la classe CalcServlet,

    modifié ceci:
    Code Java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                    String operande1 = request.getParameter("operande1");
                    String operande2 = request.getParameter("operande2");
                    operande1 = "".equals(operande1.trim()) ? "0" : operande1;
                    operande2 = "".equals(operande2.trim()) ? "0" : operande2; 
                    Calcul calcul = new Calcul(
                    Integer.parseInt(operande1,
                    request.getParameter("operateur"),
                    Integer.parseInt(operande2));
     
            request.setAttribute("calcul", calcul);
            this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp").forward(request, response);
        }


    Eric

  4. #4
    Futur Membre du Club
    réponse jeffray03
    Merci pour l'intervention,
    Mais la solution n'est toujours pas là.

    j'ai essayé ton bout de code mais il m'indique une erreur.

    Code Java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                    String operande1 = request.getParameter("operande1");
                    String operande2 = request.getParameter("operande2");
                    operande1 = "".equals(operande1.trim()) ? "0" : operande1;
                    operande2 = "".equals(operande2.trim()) ? "0" : operande2; 
                    Calcul calcul = new Calcul(
                    Integer.parseInt(operande1,                           // probleme avec interger a cause de la parenthese manquante 
                    request.getParameter("operateur"),
                    Integer.parseInt(operande2));                        // de meme parenthese manquante
     
            request.setAttribute("calcul", calcul);
            this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp").forward(request, response);
        }


    Je l'ai corrigé ainsi :

    Code Java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String operande1 = request.getParameter("operande1");
            String operande2 = request.getParameter("operande2");
            operande1 = "".equals(operande1.trim()) ? "0" : operande1;    // erreur lors de l'envoi du formulaire.
            operande2 = "".equals(operande2.trim()) ? "0" : operande2; 
            Calcul calcul = new Calcul(
                    Integer.parseInt(request.getParameter("operande1")),
                    request.getParameter("operateur"),
                    Integer.parseInt(request.getParameter("operande2")));
     
    request.setAttribute("calcul", calcul);
    this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp").forward(request, response);}
     
    }


    Maintenant le nom de ma variable n’apparaît sur la page html générée mais lors de l’envoi j'ai toujours une erreur a la ligne 27 du servlet qui correspond à la ligne où j'ai ajouté un commentaire.

  5. #5
    Membre chevronné
    Salut,
    il faudra, voir si a ce moment la, elle n´est pas null.

    dans ce cas , tu fais une condition:
    Code Java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(operand1) == null )
      operand1 = "0";
     
    if(operand2) == null )
      operand2 = "0";


    et dans le fichier jsp remplacer ceci :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    <p>
                 $[calcul.message]
            </p>

    par
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    <p>
                 ${calcul.message}
            </p>


    en passant peux-tu nous afficher l´erreur?

    Eric

  6. #6
    Membre chevronné
    salut,

    voici :
    calculatrice.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=ISO-8859-1"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Calculatrice</title>
        </head>
        <body>
     
     
            <p>
                 ${calcul.message}
            </p>
     
            <form method="post" action="CalcServlet">
                <input name ="operande1" type="number" size=3/>
                <select name="operateur" size="1">
                    <option value="+">+</option>
                    <option value="-">-</option>
                    <option value="x">x</option>
                    <option value="/">/</option>
                </select>
                <input name ="operande2" type="number" size=3/>
                <input type="submit" value="=" />
            </form>
            <p>
     
            </p>
        </body>
    </html>


    CalcServlet.java:
    Code Java :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	    	 String operande1 = request.getParameter("operande1");
                 String operande2 = request.getParameter("operande2");
                 operande1 = "".equals(operande1.trim()) ? "0" : operande1;
                 operande2 = "".equals(operande2.trim()) ? "0" : operande2; 
                 Calcul calcul = new Calcul(
                 Integer.parseInt(operande1),
                 request.getParameter("operateur"),
                 Integer.parseInt(operande2));
    	        request.setAttribute("calcul", calcul);
    	        this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp").forward(request, response);
    	    }


    Calcul.java:

    Code Java :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
    public class Calcul {
     
        int operande1 = 0;
        int operande2 = 0;
        int resultat;
        String operateur;
        String message;
        String message1;
        String message2;
     
       {
     
       if ( (operande1 == 0) && (operande2 == 0) ) {
           message1 = ("Veillez entrez une valeur");
           message = new String(message1); 
       }
       else {
            message2 = ("Bonjour, vous avez calculé" +  operande1 + operateur +  operande2 + " = "  + resultat);
     
            message = new String(message2); 
            }
       }
     
       public Calcul (int operande1, String operateur, int operande2) {
           this.operande1 = operande1;
           this.operateur = operateur;
           this.operande2 = operande2;
     
           if (this.operateur.equals("+")) {
               this.setResultat(this.operande1 + this.operande2);
           }
           else if (this.operateur.equals("-")) {
               this.setResultat(this.operande1 - this.operande2);
           }
           else if (this.operateur.equals("x")) {
               this.setResultat(this.operande1 * this.operande2);
           }
           else this.setResultat(this.operande1 / this.operande2);
     
           if ( (operande1 == 0) && (operande2 == 0) ) {
               message1 = ("Veillez entrez une valeur");
               message = new String(message1); 
           }
           else {
                message2 = ("Bonjour, vous avez calculé" +  operande1 + operateur +  operande2 + " = "  + resultat);
     
                message = new String(message2); 
                }
       }
     
       public int getResultat() {
           return resultat;
       }
       public String getMessage() {
           return message;
           }
     
       public void setResultat(int resultat) {
           this.resultat = resultat;
       }
       public void setMessage(String message) {
           this.message = message;
       }
    }


    Eric

  7. #7
    Futur Membre du Club
    Remerciement
    Merci de votre réactivité et du partage de vos connaissance.
    J'avais finalement recommencer du début pour finir sur une voie un peux différente, mais je suis revenu corriger les erreurs de celui ci.
    je vous remercie du soutient et vous remercie de de cette super aide.

###raw>template_hook.ano_emploi###