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 :

[Débutant] Afficher résultat via doPost


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Par défaut [Débutant] Afficher résultat via doPost
    Bonjour,

    Pour m'initier à J2EE, je suis en train d'essayer de réaliser une petite calculatrice :
    On propose à l'utilisateur un formulaire permettant de saisir 2 opérandes, une liste déroulante qui contient les 4 opérateurs et un bouton Submit.
    Le but est tout simplement d'afficher le résultat de l'opération.

    J'ai commencé par créer une classe Opération que voici (j'ai enlevé les accesseurs) :

    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
    package com.occalculatrice.beans;
     
    public class Operation {
     
    	private String operande1;
    	private String operateur;
    	private String operande2;
    	private String resultat;
     
    	public Operation() { }
     
    	public Operation (String operande1, String operateur, String operande2) {
    		this.operande1 = operande1;
    		this.operateur = operateur;
    		this.operande2 = operande2;
     
    		int op1 = Integer.parseInt(this.operande1);
    		int op2 = Integer.parseInt(this.operande2);
    		int res;
     
    		if (this.operateur.equals("+")) {
    			res = op1 + op2;
    		}
    		else if (this.operateur.equals("-")) {
    			res = op1 - op2;
    		}
    		else if (this.operateur.equals("x")) {
    			res = op1 * op2;
    		}
    		else res = op1 / op2;
     
    		this.resultat = Integer.toString(res);
    	}	
    }

    Voici les méthodes doGet() et doPost() de ma servlet :

    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 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 {
    		Operation operation = new Operation(
    			request.getParameter("operande1"),
    		        request.getParameter("operateur"),
    		        request.getParameter("operande2"));
     
    		request.setAttribute("operation", operation);
    	}

    Et le code de ma JSP qui contient le formulaire et sur laquelle j'aimerai afficher le résultat à l'aide de Expression Language.

    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
    <%@ page pageEncoding="UTF-8" %>
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>Calculatrice</title>
    	</head>
    	<body>
    		<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> 
    			${ operation.operande1 } ${ operation.operateur } ${ operation.operande2 } = ${ operation.resultat }
    		</p>
    	</body>
    </html>
    Malheureusement pour le moment, quand j'appuie sur le bouton Submit, j'atteris sur une page blanche (qui a pourtant la même URL que la page ou se trouve le formulaire). Pouvez vous me dire pourquoi ?
    Et existe-il un moyen plus proche pour afficher le résultat de l'opération saisit dans le formulaire?

    Merci.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    parce qu'après le calcul, tu ne fais rien. Tu n'affiche rien. Il faut remballer vers la jsp pour l'affichage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.getServletContext().getRequestDispatcher("/WEB-INF/calculatrice.jsp").include(request,response);

  3. #3
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Par défaut
    Super, ça fonctionne, merci beaucoup!

    Mais quelle est la différence entre la méthode forward() et la méthode include() ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    include inclue le contenu dans la réponse. Foward demande au browser de passer à une autre page.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher résultats sportif via données externe
    Par lfontin dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 25/06/2010, 15h01
  2. Réponses: 5
    Dernier message: 25/05/2007, 10h59
  3. Réponses: 1
    Dernier message: 02/03/2007, 22h58
  4. [débutant]Afficher une image sur une JFrame
    Par mavina dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 09/08/2006, 16h25
  5. affiche résultat en fonction du login windows
    Par bichonjp dans le forum ASP
    Réponses: 4
    Dernier message: 18/08/2005, 16h04

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