Gestion des formulaires avec Servlets
Gestion des formulaires avec Servlets
-
Objectifs
- Comprendre la récupération d’informations d’un formulaire
- Maîtrisez la méthode getParameter de la classe HttpServletRequest
-
Présentation
- 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.
- Pour envoyer des données d’un formulaire à une servlet, il suffit de mettre le nom de la servlet qui réceptionnera les données 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.
- Il est possible d’envoyer les données d’un formulaire par deux méthodes différentes :
get
: les données transiteront par l’URL via des paramètres dans une requête HTTP GET. Je vous l’ai déjà expliqué, en raison des limitations de la taille d’une URL, cette méthode est peu utilisée pour l’envoi de données.post
: les données ne transiteront pas par l’URL mais dans le corps d’une requête HTTP POST, l’utilisateur ne les verra donc pas dans la barre d’adresses de son navigateur.-
Lire les paramètres avec une servlet
- 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. -
Envoyer des données de formulaire au servlet
- Une fois que le formulaire est rempli et que l’utilisateur clique sur le bouton d’envoi, une requête HTTP sera envoyée à notre conteneur tomcat.
- Le conteneur Tomcat mappera votre action avec votre contrôleur de servlet correspondant et la forme de fonction getParameter HttpServletRequest récupérera les données de champ.
- Dans TestServlet.doPost(), l’objet request contient les saisies:
- request.getParameter("nom")
- request.getParameter("age")
- Pour le servlet, il n’y a pas de différence entre la méthode
doPost
et la méthodedoGet
- Pour le client
- La méthode
GET
transmet la requête en un seul bloc au serveur - Le nom du servlet
- Les paramètres du formulaire
- La méthode
POST
transmet la requête en deux blocs - Le nom d’un servlet en premier
- Les paramètres du formulaire en deuxième
- Avec la méthode
GET
, le navigateur WEB affiche, pour l’exemple ci-dessous:http://localhost:8080/formulaireServlet/app01?Prenom=Riadh&Nom=HAJJI
- Les informations sont affichées directement dans le navigateur! Ce n’est pas très sécuritaire!
- Avec la méthode
POST
, le navigateur WEB affiche, pour l’exemple ci-dessous:http://localhost:8080/formulaireServlet/app01
- Les informations sont affichées directement dans le navigateur! Ce n’est pas très sécuritaire!
- Les informations ne sont plus affichées directement dans le navigateur!
- Peu importe la méthode, les informations sont envoyées sur le réseau sans être chiffrées
- Pour utiliser des communications sécurisées, il faut utiliser https au lieu de http
-
Exemple
-
Applications
-
App01
- Il s’agit d’un exercice des très classiques en programmation. L’objectif est de créer un formulaire qui contient deux zones de texte et un bouton de commande. Le fait de cliquer sur le bouton le résultat de l’addition des deux nombres sera affiché en bas du bouton.
-
App02
- Refaire le même exercice avec une zone de liste déroulante des quatre opérateurs de base soit l »addition, la soustraction, la multiplication et en fin la division
Champs des formulaires directement dans des variables :
<form action="testServlet" method="POST">
Votre nom : <input type=text name="nom">
Votre âge : <input type=text name="age">
<input type=submit value="Ok">
</form>
public void doGet( HttpServletRequest request,HttpServletResponse response) ... { …
out.println("Bonjour " + request.getParameter("nom"));…