Flux rss

Servlets - Gestion des formulaires

Collection CommentCaMarche.net

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()
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.

Résultats pour Servlets Gestion des formulaires

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
[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
[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.... www.commentcamarche.net/forum/affich-2812613-servlet-envoyer-des-donnees-a-un-formulaire

Résultats pour Servlets Gestion des formulaires

Formulaires en ligne - La gestion des erreursBien qu'une attention particulière soit apportée à la conception des formulaires, tout risque d'erreur ne peut être écarté. Pour cette raison, des mécanismes de gestion des erreurs devront être mis en place. Dans le cas de saisies partielles ou... www.commentcamarche.net/faq/sujet-10791-formulaires-en-ligne-la-gestion-des-erreurs
[MacOS] FireFox -- tabulation et formulaireAvec FireFox sous MacOS (problème rencontré sour MacOsX Panther & Tiger / FireFox toutes versions) la navigation dans un formulaire web avec la touche [tab] peut réserver quelques surprises. Par défaut, la tabulation ne permet de se déplacer que de... www.commentcamarche.net/faq/sujet-2401-macos-firefox-tabulation-et-formulaire
[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

Résultats pour Servlets Gestion des formulaires

Un site ou un logiciel pour créer formulaire? (Résolu)Bonjour, Je recherche un site ou un logiciel sympa pour m'aider à faire mes formulaires PHP en trois tour de main. Que pouvez-vous me conseiller? J'ai essayé de plancher pour apprendre le code PHP mais mes neurones ont flanchés lool Merci à... www.commentcamarche.net/forum/affich-7949300-un-site-ou-un-logiciel-pour-creer-formulaire
Probleme Formulaire PHP/HTML important SVP (Résolu)Bonjour, J'ai un petit soucis concernant la gestion d'un formulaire d'inscription de salarié. J'ai donc un formulaire d'inscription que l'on rempli et qui après validation permet l'enregistrement des données dans la... www.commentcamarche.net/forum/affich-6259415-probleme-formulaire-php-html-important-svp
[ACCESS] pb ss-formulaire "image" (Résolu)Bonjour, je viens vous demander un petit coup de pouce :) je suis en train de faire une appli de gestion de discographie sous access 2003 et donc apres avoir créé mon formulaire pere (artiste) et intégré 2 sous-formulaire (album et titre)... www.commentcamarche.net/forum/affich-4066345-access-pb-ss-formulaire-image

Résultats pour Servlets Gestion des formulaires

Télécharger E-File MagicE-file Magic est un logiciel de gestion d'impression. L'utilisateur pourra publier et envoyer par e-mail les types de formulaire suivants : 1098, 1099, 5498 et W-2G (IRS). Il gère les données provenant d'un fichier Excel ou CSV et permet d'insérer... www.commentcamarche.net/telecharger/telecharger-34057347-e-file-magic
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
Télécharger GestStockGestStock est un utilitaire gratuit de gestion de stock. Il est simple et vous permet de retrouver rapidement en quelques clics vos fournisseurs, clients et stocks. Pour avoir les informations sur un produit, il suffit de saisir le nom du produit et... www.commentcamarche.net/telecharger/telecharger-34056882-geststock

Résultats pour Servlets Gestion des formulaires

Introduction aux servletsIntroduction aux servlets Les servlets (on dit généralement une servlet) sont au serveur Web ce que les applets sont au navigateur pour le client. Les servlets sont donc des applications Java fonctionnant du côté serveur au même titre que les CGI... www.commentcamarche.net/contents/servlets/servintro.php3
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