UP PREVIOUS NEXT   Technologies Internet et Education, © TECFA
  4. Traitement de formulaires

4. Traitement de formulaires

4.1 Principe de base du traitement de requêtes

   request.getParameter("paramètre")
Voir la servlet doc, par exemple:

Exemple 4-1: Simple GET Demo.


<html>
<body>
<%
String message;  
    		if ((message = request.getParameter("MESSAGE")) == null) {
      out.print("No message query argument supplied."); 
      out.print("Please use an URL like request1.jsp?MESSAGE=Hello");
    		} else 
    		out.print("Message is " + message);
%>

</body> </html>

4.2 Traitement simple de formulaires

Exemple 4-2: Simple calcul (Formulaire + JSP)

Formulaire HTML:
<form action="calcul.jsp"
 method=post>
Quelles sont vos connaissances de HTML ?
<input type="radio" name="choice" value="1"
 checked>faibles
<input type="radio" name="choice" value="2">moyennes
<input type="radio" name="choice" value="3">bonnes
<br>
Indiquez votre expertise en programmation:
<input type="radio" name="choice2" value="1" checked>absente
<input type="radio" name="choice2" value="2">moyenne
<input type="radio" name="choice2" value="3">bonne
<P>
<input type="submit"
 value="Voir le résultat!">
</form>

 

JAVA:
<%
// Parameters come as strings
String choice = request.getParameter("choice");
String choice2 = request.getParameter("choice2");
String nom = request.getParameter("nom");
 
out.println(nom + ", votre input était: question a=" + choice + " ,question b=" + choice2);
 
// Integer.parseInt() translates a string to an Integer
int score = Integer.parseInt(choice) + Integer.parseInt(choice2);
 
out.println("<h3>Votre score est de " + score + "</h3>");
 
if (score < 3) {
  out.print ("<p>Vous êtes un débutant</p>");
} else if (score < 5) {
  out.print ("<p>Vous avez un niveau moyen</p>");
} else {
  out.print ("<p>Vous êtes un expert !</p>");
}
 
%>
Explications
Problèmes avec cette page
 http://tecfa.unige.ch/guides/jsp/ex/simple-calcul/calcul.jsp?choice=10&choice2=15

4.3 Debugging de paramètres

<form action="calcul.jsp" method="get"
>

Exemple 4-3: Lister paramètres et valeurs reçus

<%@ page import="java.util.*" %>
<%
Enumeration pNameList; // contient une liste des params transmises
String pName;          // contient un de ces noms
String pVals [];       // contient l'array des valeurs pour chaque param
String val;            // 1 valeur 
out.println("<p>Method used was: " + request.getMethod()
);
out.println("<p>Liste de paramètres et valeurs (pas forcément dans l'ordre): <ol>");
for (pNameList = request.getParameterNames()
;pNameList.hasMoreElements();){
    pName = (String) pNameList.nextElement();
    out.println("<li>name=" + pName + ": ");
    pVals = request.getParameterValues
(pName);
    if (pVals != null) {
		for (int i=0; i<pVals.length; i++)out.print ("val=" + pVals[i] + " ");
    }   }
out.println("</ol>");
%>

4.4 Vérification de l'input et HTML conditionnel

Voir si un paramètre est vide:
  1. Champs texte
    • on regarde s'ils sont vides (string de taille zéro)
    • un input type "text" (HTML) est donc toujours passé au serveur !!
// input
String nomString = req.getParameter("nom");
.....
if  ( nomString.equals("") ) { ... geuler ...}
if ( nomString.compareTo("") == 0)
  1. Widgets de type "radio" etc.
    • on regarde si l'objet est présent ou absent (le formulaire ne transmet rien)
    • si "choix" n'a pas été transmis, getParameter retourne null !
String Choix = req.getParameter("choix");
....
if (Choix == null) { .... geuler .... }
HTML conditionnel

Exemple 4-4: Un simple test avec JSP (vérification et calcul des résultats)

if (request.getMethod().equals("GET")) {
    out.println("sorry you can't"); out.print("</body></html>");
    return;
}
// Parameters come as strings
choice = request.getParameter("choice");
choice2 = request.getParameter("choice2");
nom = request.getParameter("nom");
 
if (nom.equals("")) {
    %>
<p>Sorry on ne répond pas aux anons, <a href="form-test.html">refaire SVP</a>
</body></html>
     <%
     return;
}
 
if ((choice == null) || (choice2 == null)) {
    %>
<p>Utilisez la touche BACK pour compléter .... vous avez oublié qc
</body></html>
<%
     return;}

Exemple 4-5: Simple calcul en une seule page JSP

 
if ((process != null) || (process2 !=null)) {

   ... montrer les résultats
if (process2 != null) {

   ... afficher un merci
} else {

    ... dire que l'on peut essayer de nouveau
}
if (process2 == null) {

%>
   ... afficher le formulaire
<input type="submit" name="process" value="Voir le résultat!">
<input type="submit" name="process2" value="Voir le résultat et finir!">
<% }
 %>

UP PREVIOUS NEXT -- TIE