Partage
  • Partager sur Facebook
  • Partager sur Twitter

JEE_Calculatrice_ TP

Manipuler de Java Beans dans un Jsp

    16 octobre 2018 à 16:47:57

    Bonjour

    Voici ma Servlet qui fait appel un Objet 

    package last.calcul;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    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 beanscalcul.Beancalcul;
    
    /**
     * Servlet implementation class Calculatrice
     */
    @WebServlet("/Calculatrice")
    public class Lastcalculatrice extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        
        public Lastcalculatrice() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
            this.getServletContext().getRequestDispatcher("/WEB-INF/calcul.jsp").forward(request, response);
    
    	}
    
    	
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	
           
    		Beancalcul bean= new Beancalcul();
            bean.calculer(request);
            request.setAttribute("bean", bean);
    		
    		
            this.getServletContext().getRequestDispatcher("/WEB-INF/Calcul.jsp").forward(request, response);
    
    	}
    
    }
    

    Une Classe Beancalcul (avec Getter et Setter)  fait le calcul est retourne la résultat, la résultat est une chaine de caractères .

    package beanscalcul;
    
    import javax.servlet.http.HttpServletRequest;
    
    public class Beancalcul {
    	private String resultat;
    	
    	public void calculer(HttpServletRequest request){
    		
    		int a = Integer.parseInt(request.getParameter("a"));
    		int b = Integer.parseInt(request.getParameter("b"));
    		
                    String A= request.getParameter("a");
                    String B= request.getParameter("b");
            //Test si le champ a est vide la valeur de a  sera 0 et IDEM pour b.
                   if (A== null ||A.isEmpty()) {a=0;}
                   if (B== null ||B.isEmpty()) {b=0;}
    		
    		
    		String choix=request.getParameter("location");
    		int c=0;
    		 switch(choix)
            {
            case "+":
            {
                c= a+b;
    			resultat="La résultat de l'opération est: +c";
            }
            case "-":
            {
                c= a-b;
    			resultat="La résultat de l'opération est: +c";
            }
            case "×":
            {
                c= a*b;
    			resultat="La résultat de l'opération est: +c";
            }
            case "÷":
            {
                if (b==0)
    			{
    				resultat="Division impossible par zero";
    				
    			
    			}
    			else 			{	
    			c= a/b;
    			resultat="La résultat de l'opération est: +c";
    			//out.println("La résultat de l'opération est: "+A+"/"+B+"="+c);
    			}
            }
            }
     
            }
    		
    	public String getResultat() {
    		return resultat;
    	}
    
    	public void setResultat(String resultat) {
    		this.resultat = resultat;
    	}
    
    }
    


    Si un champ est vide la valeur sera 0:

    //Test si le champ a est vide la valeur de a  sera 0 et IDEM pour b.
                   if (A== null ||A.isEmpty()) {a=0;}
                   if (B== null ||B.isEmpty()) {b=0;}


    Voici mon .jsp

    <!DOCTYPE html>
    <html>
        <head >
            <meta charset="utf-8" />
            <title>Test</title>
        </head>
    <body>
    <p>${bean.resultat} </p> <br>
    <Form action="Lastcalculatrice" method="post">
     
     <label for="a">a : </label>
    <input type="text"  name="a" value=""> 
    <select name="location">
    <option value="+">+</option>
    <option value="-">-</option>
    <option value="*">*</option>
    <option value="/">/</option>
    </select>
    <label for="b">b : </label>
    <input type="text" name="b" value=""> 
     <input type="submit" value="=" > 
     </Form>
     
    </body>
    </html>
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="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>Lastcalculatrice</servlet-name>
        <servlet-class>last.calcul.Lastcalculatrice</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>Lastcalculatrice</servlet-name>
        <url-pattern>/Lastcalculatrice</url-pattern>
      </servlet-mapping>
    </web-app>

    Le formulaire s'affiche mais il ne fait pas le calcul, un message d'erreur s'affiche:

     

    oct. 16, 2018 2:41:27 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
    AVERTISSEMENT: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:dernier-calculatrice' did not find a matching property.
    oct. 16, 2018 2:41:27 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
    AVERTISSEMENT: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Calculatrice' did not find a matching property.
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Server version:        Apache Tomcat/7.0.78
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Server built:          May 10 2017 15:02:19 UTC
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Server number:         7.0.78.0
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: OS Name:               Windows 7
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: OS Version:            6.1
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Architecture:          x86
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Java Home:             C:\Program Files\Java\jre1.8.0_161
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: JVM Version:           1.8.0_161-b12
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: JVM Vendor:            Oracle Corporation
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: CATALINA_BASE:         D:\Formation JEE\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: CATALINA_HOME:         C:\Program Files\Apache Software Foundation\Tomcat 7.0
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Command line argument: -Dcatalina.base=D:\Formation JEE\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 7.0
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Command line argument: -Dwtp.deploy=D:\Formation JEE\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Command line argument: -Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 7.0\endorsed
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.VersionLoggerListener log
    INFOS: Command line argument: -Dfile.encoding=Cp1252
    oct. 16, 2018 2:41:27 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    INFOS: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_161\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_181/bin/client;C:/Program Files/Java/jre1.8.0_181/bin;C:/Program Files/Java/jre1.8.0_181/lib/i386;C:\Program Files\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\Gammouda\AppData\Roaming\Dashlane\4.6.6.23032\bin\Firefox_Extension\{442718d9-475e-452a-b3e1-fb1ee16b8e9f}\components;D:\Formation JEE\eclipsejee;;.
    oct. 16, 2018 2:41:27 PM org.apache.coyote.AbstractProtocol init
    INFOS: Initializing ProtocolHandler ["http-bio-8081"]
    oct. 16, 2018 2:41:27 PM org.apache.coyote.AbstractProtocol init
    INFOS: Initializing ProtocolHandler ["ajp-bio-8019"]
    oct. 16, 2018 2:41:27 PM org.apache.catalina.startup.Catalina load
    INFOS: Initialization processed in 779 ms
    oct. 16, 2018 2:41:28 PM org.apache.catalina.core.StandardService startInternal
    INFOS: Démarrage du service Catalina
    oct. 16, 2018 2:41:28 PM org.apache.catalina.core.StandardEngine startInternal
    INFOS: Starting Servlet Engine: Apache Tomcat/7.0.78
    oct. 16, 2018 2:41:28 PM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
    INFOS: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [185] milliseconds.
    oct. 16, 2018 2:41:28 PM org.apache.coyote.AbstractProtocol start
    INFOS: Starting ProtocolHandler ["http-bio-8081"]
    oct. 16, 2018 2:41:28 PM org.apache.coyote.AbstractProtocol start
    INFOS: Starting ProtocolHandler ["ajp-bio-8019"]
    oct. 16, 2018 2:41:28 PM org.apache.catalina.startup.Catalina start
    INFOS: Server startup in 806 ms
    









    • Partager sur Facebook
    • Partager sur Twitter
      17 octobre 2018 à 9:09:12

      Quel message d'erreur ? Sauf erreur de ma part tu ne l'as pas donné ci-dessus.

      Maintenant, effectivement, avec le code que tu donnes, aucun calcul ne peut être fait. Il y a (au moins) UNE erreur évidente qui fait que ça ne peut pas marcher.

      Je te met sur la voie : est-ce que ta méthode doPost est appelée lorsque tu soumets ton formulaire ?

      Pour répondre à cette question tu as plusieurs possibilités, l'idéal étant de savoir utiliser les outils de débuggage et l'exécution pas à pas dans ECLIPSE et/ou savoir analyser les échanges réseau entre un navigateur et le serveur associé, ce qui suppose de faire ton test non pas dans eclipse, mais dans un navigateur comme Firefox ou Chrome et d'utiliser F12...

      Pour te mettre sur la piste : il est évident que, tel que ton code est écris, ta méthode doPost n'est pas appelée & exécuter.

      • Partager sur Facebook
      • Partager sur Twitter
        18 octobre 2018 à 23:15:54

        Désolé,

        J'ai eu peu de temps.

        J'ai pas vérifier l'upload de l'image contenant l'Erreur.

        Je suis débutant, je suit le cours:Développez des sites web avec Java EE : "Les formulaires avec Java EE"

        https://openclassrooms.com/fr/courses/2434016-developpez-des-sites-web-avec-java-ee/2438666-les-formulaires-avec-java-ee

        En suivant la même méthode dans cette partie du cours: voici mes codes actuelles

        <?xml version="1.0" encoding="UTF-8"?>
        <web-app xmlns:xsi="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>Lastcalculatrice</servlet-name>
            <servlet-class>last.calcul.Lastcalculatrice</servlet-class>
          </servlet>
          <servlet-mapping>
            <servlet-name>Lastcalculatrice</servlet-name>
            <url-pattern>/Lastcalculatrice</url-pattern>
          </servlet-mapping>
        </web-app>
        package last.calcul;
        
        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;
        
        import beanscalcul.Beancalcul;
        
        /**
         * Servlet implementation class Calculatrice
         */
        @WebServlet("/Calculatrice")
        public class Lastcalculatrice extends HttpServlet {
        	private static final long serialVersionUID = 1L;
               
            
            public Lastcalculatrice() {
                super();
                // TODO Auto-generated constructor stub
            }
        
        	
        	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        		
                this.getServletContext().getRequestDispatcher("/WEB-INF/calcul.jsp").forward(request, response);
        
        	}
        
        	
        	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        	
        		
               
        		Beancalcul bean= new Beancalcul();
                bean.calculer(request);
                request.setAttribute("bean", bean);
        		
        		
                this.getServletContext().getRequestDispatcher("/WEB-INF/Calcul.jsp").forward(request, response);
        
        	}
        
        }
        

        Dans la méthode doPost, on a crée un nouveau objet bean,

        et avec request.setAttribute on a envoyé cette objet a la page jsp.

        package beanscalcul;
        
        import javax.servlet.http.HttpServletRequest;
        
        public class Beancalcul {
        	private String resultat;
        	
        	public void calculer(HttpServletRequest request){
        		
        		int a = Integer.parseInt(request.getParameter("a"));
        		int b = Integer.parseInt(request.getParameter("b"));
        				
        		String choix=request.getParameter("location");
        		int c=0;
        		if (choix.equals("+"))
        		{
        			c= a+b;
        			resultat="La résultat de l'opération est: +c";
        			
        		}
        		else if (choix.equals("-"))
        		{
        			c= a-b;
        			resultat="La résultat de l'opération est: +c";
        			
        		}
        		else if (choix.equals("*"))
        		{
        			c= a*b;
        			resultat="La résultat de l'opération est: +c";
        			
        		}
        		else if (choix.equals("/"))
        		{
        			if (b==0)
        			{
        				resultat="Division impossible par zero";
        			
        			}
        			else 			{	
        			c= a/b;
        			resultat="La résultat de l'opération est: +c";
        			}
        		}
        	}
        
        		
         
               		
        	public String getResultat() {
        		return resultat;
        	}
        
        	public void setResultat(String resultat) {
        		this.resultat = resultat;
        	}
        
        }
        

        Dans la page jsp, on a utilisé une balise JSLT pour Afficher la résultat.  

        <p><c:out value="${bean.resultat}" /></p>

        C'est le code jsp: 

        <%@ page pageEncoding="UTF-8" %>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        
        <!DOCTYPE html>
        <html>
            <head >
                <meta charset="utf-8" />
                <title>Test</title>
            </head>
        <body>
        
         <p><c:out value="${bean.resultat}" /></p>
        
        <Form action="Lastcalculatrice" method="post">
         
         
         <label for="a">a : </label>
        <input type="text"  name="a" value=""> 
        <select name="location">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
        </select>
        <label for="b">b : </label>
        <input type="text" name="b" value=""> 
         <input type="submit" value="=" > 
         </Form>
         
        </body>
        </html>



        La même Erreur s'affiche.



        -
        Edité par FawziGammoudi1 18 octobre 2018 à 23:23:53

        • Partager sur Facebook
        • Partager sur Twitter
          19 octobre 2018 à 9:00:33

          La nature de l'erreur est donnée par le message de tomcat : 404, ressource non trouvée. Le nom de la ressource est sans ambiguïté aussi :

          calcul.jsp != Calcul.jsp

          • Partager sur Facebook
          • Partager sur Twitter
            21 octobre 2018 à 2:12:21

            J'ai modifié le nom d la ressource :euh:, et ça marche.

            Merci beaucoup pour votre aide.

            • Partager sur Facebook
            • Partager sur Twitter

            JEE_Calculatrice_ TP

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown