Flux rss
Bookmark Ajouter aux favoris / Partager

Introduction aux formulaires

Les servlets rendent très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML, c'est-à-dire une interface graphique permettant à l'utilisateur de saisir des données.

Grâce à la balise Form du langage HTML, il est très facile de créer des formulaires comprenant :

  • des champs de saisie
  • des cases à cocher
  • des boutons radio
  • des listes à choix multiples
  • ...

Pour utiliser un tel formulaire capable d'envoyer des informations à une servlet, il suffit de mettre le nom de la servlet qui réceptionnera les informations en tant que valeur de l'attribut Action de la balise Form, et de spécifier la méthode HTTP désirée grâce à l'attribut Method. Les données sont envoyées à l'aide de la méthode spécifiée (GET par défaut) après que l'utilisateur clique sur un bouton de type Submit

Voici ce à quoi peut ressembler un formulaire en HTML, permettant d'envoyer les coordonnées d'une personne à une servlet nommé UserInfo :

<FORM Method="POST" Action="http://serveur/servlet/UserInfo">

Nom : 		<INPUT type=text size=20 name=nom><BR>

Prénom : 	<INPUT type=text size=20 name=prenom><BR>

Age : 		<INPUT type=text size=2 name=age><BR>

		<INPUT type=submit value=Envoyer>

</FORM>
Le résultat de ce code est le suivant (le bouton Envoyer est volontairement désactivé) :
Nom :
Prénom :
Age :

Le codage des informations

Chaque élément du formulaire doit possèder un nom unique, de telle façon que la valeur associé à l'élément forme avec le nom de celui-ci une paire nom/valeur du type :

Nom_de_l_element = valeur
L'ensemble des paires nom/valeur sont séparées par des ET commerciaux (le caractère "&"). Ainsi, l'envoi d'un formulaire crée une chaîne de la forme :
champ1=valeur1&champ2=valeur2&champ3=valeur3
L'envoi de cette chaîne se fera différemment selon que la méthode utilisée pour l'envoi du formulaire est GET ou POST.

La méthode GET

La méthode GET permet d'envoyer les éléments du formulaire au travers de l'URL du script, en ajoutant l'ensemble des paires nom/valeur à l'URL du script, séparé de celui-ci par un point d'interrogation, ce qui donne une URL du type :

http://nom_du_serveur/cgi-bin/script.cgi?champ1=valeur1&champ2=valeur2...

Toutefois, la longueur de la chaîne URL étant limitée à 255 caractères, les informations situées au-delà de cette limite seront irrémédiablement perdues. De plus, cela crée une URL surchargée dans la barre d'adresse d'un navigateur et peut dévoiler des informations sensibles comme un mot de passe...

La méthode POST

La méthode POST est une bonne alternative à la méthode GET. Cette méthode code les informations de la même façon que la méthode GET (encodage URL et paires nom/valeur) mais elle envoie les données à la suite des en-têtes HTTP, dans un champ appelé corps de la requête. De cette façon la quantité de données envoyées n'est plus limitée, et est connue du serveur grâce à l'en-tête permettant de connaître la taille du corps de la requête.

Lire les paramètres avec une servlet

L'un des points forts des servlets est la possibilité de traiter (dans le jargon de l'informatique on dira "parser") automatiquement les données en provenance de formulaires.

En effet, l'objet HttpServletRequest possède de nombreuses méthodes (dont la plus courante getParameter()) permettant de retourner la valeur d'un champ du formulaire en lui passant en argument le nom du champ, qu'il s'agisse de données pasées par la méthode POST ou GET.

La méthode getParameter()

La méthode getParameter() de l'objet HttpServletRequest permet de retourner le valeur d'un champ dont on a passé le nom en argument :

public String getParameter(String Key)
Les noms des champs sont sensibles à la casse. Il faut donc veiller à les saisir dans la servlet comme ils le sont dans le formulaire HTML. La méthode getParameter() retourne une chaîne contenant la valeur du champ. Si le champ est vide, une chaîne vide est retournée. Si le champ n'existe pas, la valeur null est retournée.

Ainsi, un formulaire comportant une entrée comme suit :

<Input type="text" name="NomDuChamp">
sera traité dans la servlet de cette façon :
String Champ = req.getParameter("NomDuChamp")

La méthode getParameterValues()

Lorsqu'un champ d'un formulaire peut avoir plusieurs valeurs (liste à choix multiples, cases à cocher, ...), il est possible d'utiliser la méthode getParameterValues() :

public String[] getParameterValues(String Key)
Cette méthode retourne un tableau contenant l'ensemble des valeurs affectées à la clé spécifiée en paramètre.

La méthode getParameterNames()

Pour connaître l'ensemble des noms des champs du formulaire passé à la servlet, il est possible d'utiliser la méthode getParameterNames() :

Enumeration getParameterNames()
Cette méthode retourne un objet Enumeration, contenant la liste des champs du formulaire. Il est possible de transformer chaque entrée en chaîne, puis de la traiter avec la méthode getParameter() afin de récupérer sa valeur.

Un exemple de formulaire

Reprenons le formulaire présenté ci-dessus :

<FORM Method="POST" Action="http://serveur/servlet/UserInfo">

Nom : 		<INPUT type=text size=20 name=Nom><BR>

Prénom : 	<INPUT type=text size=20 name=Prenom><BR>

Age : 		<INPUT type=text size=2 name=Age><BR>

		<INPUT type=submit value=Envoyer>

</FORM>
La servlet suivante permet d'afficher les valeurs des paramètres Nom, Prenom, Age saisis par l'utilisateur dans le formulaire :
import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*;

public class UserInfo extends HttpServlet {
  public void doPost(HttpServletRequest request,
					HttpServletResponse response)
	  throws ServletException, IOException {
	response.setContentType("text/html");

	PrintWriter out = response.getWriter();

	
	out.println("<HTML>\n<BODY>\n" +
				"<H1>Recapitulatif des informations</H1>\n" +
				"<UL>\n" +			   
		"  <LI>Nom: "
				+ request.getParameter("Nom") + "\n" +
				"  <LI>Prenom: "
				+ request.getParameter("Prenom") + "\n" +
				"  <LI>Age: "
				+ request.getParameter("Age") + "\n" +
				"</UL>\n" +				
		"</BODY></HTML>");  
  }
}

Lister l'ensemble des paramètres

Il est ainsi facile de créer une servlet permettant d'afficher l'ensemble des paramètres qui lui ont été passés par formulaire grâce à la méthode getParameterNames() :

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*; 
public class Parametres extends HttpServlet {
  public void doGet(HttpServletRequest request,
					HttpServletResponse response)
	  throws ServletException, IOException {
	response.setContentType("text/html");

	PrintWriter out = response.getWriter();

	out.println("<html><body>\n" +
				"<h1>Tableau des paramètres</h1>\n" +
				"<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n" +
				"<tr>\n" +
				"<th>Nom</th><th>Valeur(s)</th>");

	Enumeration NomsParam = request.getParameterNames();

	while(NomsParam.hasMoreElements()) {
	  String NomParam = (String)NomsParam.nextElement();

	  out.println("<tr><td>" + NomParam + "</td></tr>\n");

	  String[] ValeursParam = request.getParameterValues(NomParam);

	  if (ValeursParam.length() == 1) {		
	String ValeurParam = ValeursParam[0];

		if (ValeurParam.length() == 0)		  
		out.println("<td><b>Aucune valeur</i></td>");

		else		  out.println(ValeurParam);	  
	  } 
	  else {
		out.println("<td><ul>");		
	for(int i=0; i < ValeursParam.length(); i++) {
		  out.println("<li>" + ValeursParam[i] + "</li>");		
	}
		out.println("</ul></td></tr>");	  
	  }	
	}
	out.println("</table>\n</body></html>");  
  }
  public void doPost(HttpServletRequest request,
					 HttpServletResponse response)
	  throws ServletException, IOException {	
	doGet(request, response);  
  }
}
Quelques remarques :
  • La boucle while(NomsParam.hasMoreElements()) permet de parcourir tous les éléments du formulaire, associé à NomsParam.nextElement()


Dernière modification le mardi 14 octobre 2008 à 17:40:39.Ce document intitulé « Servlets - Gestion des formulaires » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
[HTML] gestion formulaire html (Résolu) Bonjour (je suis nouveau sur CCM) Enfaite jai un probleme jai fais un formulaire mail voici le code mais je sais pas comment faire la gestion d'erreur comme les champ vite ou @ dans e-mail www.commentcamarche.net/forum/affich-2637950-html-gestion-formulaire-html
Servlets - Gestion des sessions HTTP: un protocole non connecté Le protocole HTTP est un protocole non connecté (on parle aussi de protocole sans états, en anglais stateless protocol), cela signifie que chaque requête est traitée indépendamment des autres et qu'aucun historique... www.commentcamarche.net/contents/servlets/servsession.php3
Servlets - Première Servlet Premiere servlet Voici un exemple simple de servlet dont le seul but est d'afficher du texte sur le navigateur du client : import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class PremiereServlet extends HttpServlet { ... www.commentcamarche.net/contents/servlets/servprem.php3
La gestion des notes de fraisGérer les notes de frais avec des outils électroniques Lorsque les équipes d’une entreprise s’agrandissent, la gestion administrative devient plus complexe. Parmi les dossiers, la gestion des notes de frais. Un casse-tête très chronophage que des... www.commentcamarche.net/faq/sujet-9732-la-gestion-des-notes-de-frais
[Webmaster] Un formulaire de contact pour votre siteCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version... www.commentcamarche.net/faq/sujet-4516-webmaster-un-formulaire-de-contact-pour-votre-site
Logiciels de gestion et comptabilitéLogiciels de gestion et comptabilité De nombreux logiciels sont disponibles sur le marché pour vous faciliter la gestion de votre entreprise, notamment dans le domaine de l'architecture et du bâtiment. Comptabilité, facturation, gestion... www.commentcamarche.net/faq/sujet-9737-logiciels-de-gestion-et-comptabilite
Php: verifier qu'un formulaire est rempliBonjour! Je voudrais vérifier que le formulaire a été rempli au complet et sil nest pas rempli au complet un message saffiche pour avertir qu'il faut qu'il remplisse tout les champs... mais je n'ai vraiment aucune idée comment faire! j'essais toute... www.commentcamarche.net/forum/affich-346942-php-verifier-qu-un-formulaire-est-rempli
[servlet] envoyer des données a un formulaire (Résolu)Bonjour, étant nouveau ici je me décide a poster ce forum m'a bien aidé auparant. Alors je m'explique j'ai une jsp avec un formulaire. Lorsque je clique sur le bouton, ma servlet est appelée et récupere les données du formulaire. Ensuite elle fait son... www.commentcamarche.net/forum/affich-2812613-servlet-envoyer-des-donnees-a-un-formulaire
Joomla (gestion de formulaire contact)Bonjour, je voudrais savoir comment faire pour ajouter des champs pour le formulaire contact de joomla sans avoir a toucher au code sinon c quoi la procédure si on doit toucher au code ? merci de votre réponse www.commentcamarche.net/forum/affich-11734758-joomla-gestion-de-formulaire-contact
Télécharger Gestion d'Associations ou de SyndicatsBien qu’il semble facile de créer une association et/ou un syndicat, la gestion n’est pas une mince affaire ! D’où l’existence de programme qui vous assistera dans tous les taches s’y rapportant, allant de l’élaboration d’un procès verbal à la gestion... www.commentcamarche.net/telecharger/telecharger-34056635-gestion-d-associations-ou-de-syndicats
Les formulaires HTMLIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains... www.commentcamarche.net/contents/html/htmlform.php3
Méthodologie de gestion de projetLa gestion de projet - La nécessité d'une méthodologie claire On appelle « gestion de projet » (éventuellement « conduite de projet ») l'organisation méthodologique mise en œuvre pour faire en sorte que l'ouvrage réalisé par le maître... www.commentcamarche.net/contents/projet/projetmet.php3
Enterprise Resource Planning (ERP) - Progiciel de Gestion IntégrIntroduction aux ERP Les ERP (en anglais Enterprise Resource Planning), aussi appelés Progiciels de Gestion Intégrés (PGI), sont des applications dont le but est de coordonner l'ensemble des activités d'une entreprise (activités dites verticales... www.commentcamarche.net/contents/entreprise/erp.php3