rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[JSP]C'est magique?

Posté par Rico, le jeudi 21 août 2003 à 12:31:48
Bonjour,
Voilà, je pose ma question, j'm'explique après...:
comment un script jsp sait-il quelle méthode java invoquer quand un bouton de type "submit" d'une page est pressé?

En fait, j'essaie de voire un peu comment Tomcat et le jsp marchent. J'ai donc jeté un coup d'oeil au code source d'une page jsp donnée en exemple avec tomcat (numguess.jsp). Après avoir fouillé dans les fichiers de config, je n'ai pas trouvé réponse à ma question. C'est précisemment ces trois lignes là qui me peinent :
  <form method=get>
  What's your guess? <input type=text name=guess>
  <input type=submit value="Submit">

Je m'attendais à y trouver l'invocation de la méthode java qui traite la valeur donnée dans la zone de texte. Or cette invocation est implicite, mais bien réelle...(Il s'agit de deviner un nombre entre 1 et 100. Par exemple, le nombre d'essais réalisés est mis à jour à la pression du bouton submit. Tout ça est réalisé par la classe java NumberGuessBean)

Je ne crois pas à la magie, aussi je me dis qu'il doit y avoir une explication, dont la simplicité risque de m'agacer...

Espérant pas avoir été trop flou, bien l'merci pour vos aides!
Rico.
Répondre à Rico  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Rico, le jeudi 4 septembre 2003 à 09:32:37
Bon, j'insiste un coup, parce que je me suis repenché sur le problème, et j'ai toujours pas vu le principe. Normalement, il y a une méthode "doGet" (dans une classe java incluse dans le .jsp : NumberGuessBean) qui doit permettre au navigateur de savoir quoi faire une fois le bouton pressé. Mais dans ce cas, rien. Donc je ne vois pas le lien entre le clique sur le bouton "submit", et l'action qui en découle. (appel d'une méthode de la classe NumberGuessBean).
Kiki pourrait m'aider?
Vous remerciant,
Rico.
Répondre à Rico

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Robert, le jeudi 4 septembre 2003 à 13:40:08
<form ACTION=???>
Répondre à Robert

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Jeff, le jeudi 4 septembre 2003 à 13:50:33
Sauf que tu nous donne pas tout le code source...

En fait je suppose que lorsque l'on précise pas d'action, c'est la page elle-même qui est invoquée... elle fait donc le formulaire + le traitement ! Jeff --=||[WM@CCM]||=--
Répondre à Jeff

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Rico, le samedi 6 septembre 2003 à 10:05:14
Voici le code jsp, suivi du code java. Mon soucis est de comprendre comment est apellée la méthode setGuess, avec le bon paramètre (le contenu de la zone de texte) :
(Dans le web.xml, rien n'apparait de ce genre)

<!--
  Copyright (c) 1999 The Apache Software Foundation.  All rights 
  reserved.

  Number Guess Game
  Written by Jason Hunter, CTO, K&A Software
  http://www.servlets.com
-->

<%@ page import = "num.NumberGuessBean" %>

<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/>
<jsp:setProperty name="numguess" property="*"/>

<html>
<head><title>Number Guess</title></head>
<body bgcolor="white">
<font size=4>

<% if (numguess.getSuccess()) { %>

  Congratulations!  You got it.
  And after just <%= numguess.getNumGuesses() %> tries.<p>

  <% numguess.reset(); %>

  Care to <a href="numguess.jsp">try again</a>?

<% } else if (numguess.getNumGuesses() == 0) { %>

  Welcome to the Number Guess game.<p>

  I'm thinking of a number between 1 and 100.<p>

  <form method=get>
  What's your guess? <input type=text name=guess>
  <input type=submit value="Submit">
  </form>

<% } else { %>

  Good guess, but nope.  Try <b><%= numguess.getHint() %></b>.

  You have made <%= numguess.getNumGuesses() %> guesses.<p>

  I'm thinking of a number between 1 and 100.<p>

  <form method=get>
  What's your guess? <input type=text name=guess>
  <input type=submit value="Submit">
  </form>
 <% } %>

</font>
</body>
</html>



Et le code java :
/*
 * Originally written by Jason Hunter, http://www.servlets.com.
 */
package num;
import java.util.*;
public class NumberGuessBean {
  int answer;
  boolean success;
  String hint;
  int numGuesses;
  public NumberGuessBean() {
    reset();
  }
  public void setGuess(String guess) {
    numGuesses++;
    int g;
    try {
      g = Integer.parseInt(guess);
    }
    catch (NumberFormatException e) {
      g = -1;
    }
    if (g == answer) {
      success = true;
    }
    else if (g == -1) {
      hint = "a number next time";
    }
    else if (g < answer) {
      hint = "higher";
    }
    else if (g > answer) {
      hint = "lower";
    }
  }
  public boolean getSuccess() {
    return success;
  }
  public String getHint() {
    return "" + hint;
  }
  public int getNumGuesses() {
    return numGuesses;
  }
  public void reset() {
    answer = Math.abs(new Random().nextInt() % 100) + 1;
    success = false;
    numGuesses = 0;
  }
}
Répondre à Rico

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Rico, le mercredi 10 septembre 2003 à 08:43:10
Ou comment se sentir très seul au sein d'une discussion...T'façon j'm'en fous, g fini par trouver tout seul...

Donc si ça en intéresse quand même, le principe du jsp, c'est que c'est effectivement magique, et qu'un certain nombre de méthodes s'apellent "automatiquement" : par exemple, au clique sur un bouton dont le nom est "toto" (défini en html par exemple par :
<FORM METHOD=get>
<INPUT TYPE=submit NAME="toto" VALUE="ma valeur">
</FORM>
)
la méthode "setToto("ma valeur")" est automatiquement appelée (si elle se trouve dans la classe importée)...Grosso modo, ça marche un peu comme ça. Et derrière, y'a plein de subtilités sympathiques.

Moâ, c'était juste ça que je voulais savoir...
Ciao,
L'ami Rico.
Répondre à Rico

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lillu, le mercredi 10 septembre 2003 à 10:33:23
Salut,

Moi aussi, j'etais curieuse comment les forms HTML marche avec JSP et je trouve que ces deux articles peuvent clarifier quelque questions...

http://java.sun.com/products/jsp/html/jspbasics.fm2.html

http://www.javaworld.com/javaworld/jw-03-2000/jw-0331-ssj-fo­rms.html

Ciao

Lillu

http://www.geocities.com/lillamarta
http://www.geocities.com/lillamarta/purple
Répondre à lillu

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
boutheina, le jeudi 10 mai 2007 à 14:21:50
s'il vous plait j'ai un problème de code java
je veut savoir comment faire une méthode de recherche en java avec le type résultats est un vector
aidez moi pour terminer mon projet fin d'études
Répondre à boutheina

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 raoudoutchy, le lundi 18 février 2008 à 01:53:55
bonjour
voilà un exemple qui peut t'aider

public Vector getAllInterests ( ) throws Exception {
// Retourne un vecteur contenant l'ensemble des centres d'intérêt trouvés
// dans la base
Vector interests = new Vector();
try {
String request = "select * from INTEREST";

Statement statement = connection.createStatement();
ResultSet response = statement.executeQuery(request);

while (response.next()) {
int interestID = response.getInt("ID_INTEREST");
String interestName = response.getString("INTEREST");

Interest interest = new Interest ( interestID, interestName );

interests.add(interest);
}

response.close();
statement.close();

return interests;
}
catch (Exception e) {
throw e;
}
}



BN: INTEREST est le nom de la table et ID_INTEREST et INTEREST sont des champs de types int et String respectivement
il est à noter aussi que Interest (dans la ligne contenant le code "new Interest ( interestID, interestName )" est le nom d'une classe java ayant 2 attributs de types int et String
Répondre à raoudoutchy
Logiciels pertinents trouvés dans les téléchargements
Télécharger Virtual Magnifying Glass 3.2.1Virtual Magnifying Glass - Virtual Magnifying Glass est une loupe gratuite et libre pour les système Windows et Linux. Très simple d'emploi, elle est...Catégorie: Loupe
Licence: Freeware/gratuit
Télécharger Magentic  2.0Magentic - Pouvoir gérer ces fonds d'écran ou encore créez soit même ces écrans de veilles, ne sont plus des tâches réservées aux...Catégorie: Personnalisation
Licence: Freeware/gratuit
Télécharger Lanterne Magique  2.0Lanterne Magique - Après les vacances, on se rend compte qu’on a pris beaucoup trop de photos. On a du mal à les visualiser méthodiquement ou...Catégorie: Album photo
Licence: Freeware/gratuit
Télécharger Magical Jelly Bean Keyfinder  2.0.1Magical Jelly Bean Keyfinder - The Magical Jelly Bean Keyfinder est un outil open source qui vous permet de restaurer les clés produits (cd key) utilisées...Catégorie: Système
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [JSP]C'est magique? »