Exemples de programmes JSP : formulaire d'inscription et de connexion
โก Rรฉsumรฉ intelligent
Les exemples de programmes JSP prรฉsentรฉs ici construisent trois modules : un formulaire dโinscription, un formulaire de connexion et de dรฉconnexion, et une page de traitement de formulaire. Chacun relie une vue JSP ร un contrรดleur de servlet afin que la sรฉparation MVC reste visible pour les dรฉbutants.
Ces exemples pratiques montrent comment dรฉvelopper des programmes d'exemple avec JSP et comment implรฉmenter l'architecture MVC autour de ces programmes. Trois modules sont construits successivement :
- Formulaire d'inscription
- Formulaire de connexion et de dรฉconnexion
- Formulaire JSP
Comment crรฉer un formulaire d'inscription en JSP
Dans un formulaire d'inscription, nous avons un formulaire ร remplir avec toutes les informations, notamment le nom, le nom d'utilisateur, le mot de passe, l'adresse, le numรฉro de tรฉlรฉphone, etc.
Ce formulaire nous permet de nous inscrire ร l'application. Il recueille toutes nos informations et les stocke dans un systรจme. base de donnรฉes ou cache.
Dans cet exemple, nous allons prendre le ยซGuru ยซ Formulaire dโinscription ยป, qui comporte les champs suivants :
- Prรฉnom
- Nom de famille
- Nom d'utilisateur ( Ou : Nom d'รฉpouse )
- Mot de passe
- Adresse
- Tรฉlรฉphone
Une fois tous ces dรฉtails renseignรฉs, nous disposons d'un bouton ยซ Soumettre ยป ; en cliquant sur ce bouton, toutes les informations sont envoyรฉes au servlet.
Exemple 1 : Register_1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Registration Form</title> </head> <body> <h1>Guru Register Form</h1> <form action="guru_register" method="post"> <table style="with: 50%"> <tr> <td>First Name</td> <td><input type="text" name="first_name" /></td> </tr> <tr> <td>Last Name</td> <td><input type="text" name="last_name" /></td> </tr> <tr> <td>UserName</td> <td><input type="text" name="username" /></td> </tr> <tr> <td>Password</td> <td><input type="password" name="password" /></td> </tr> <tr> <td>Address</td> <td><input type="text" name="address" /></td> </tr> <tr> <td>Contact No</td> <td><input type="text" name="contact" /></td> </tr></table> <input type="submit" value="Submit" /></form> </body> </html>
Explication du code :
Code Ligne 11: Nous utilisons ici un formulaire qui comporte une action, ร savoir la servlet ร laquelle la requรชte sera soumise ; cette servlet se nomme guru_register.java. La requรชte sera traitรฉe via la mรฉthode POST.
Code Ligne 14-16: Ici, le type d'entrรฉe est du texte et le nom est first_name.
Code Ligne 18-20: Ici, le type d'entrรฉe est du texte et le nom est last_name.
Code Ligne 22-24: Ici, le type d'entrรฉe est du texte et le nom est ยซ username ยป.
Code Ligne 26-28: Ici, nous prenons comme type d'entrรฉe ยซ mot de passe ยป (cela masque le mot de passe pendant sa saisie) et comme nom ยซ mot de passe ยป.
Code Ligne 30-32: Ici, le type d'entrรฉe est du texte et le nom est une adresse.
Code Ligne 34-36: Ici, le type d'entrรฉe est du texte et le nom est un contact.
Code Ligne 37: Nous utilisons ici un bouton de type ยซ Envoyer ยป dont la valeur est รฉgalement ยซ Envoyer ยป. En cliquant sur ce bouton, l'action est redirigรฉe vers le servlet guru_register correspondant, oรน toutes les valeurs des paramรจtres sont transmises dans la requรชte.
ร noter: l'attribut de table dans Code La ligne 12 se lit style="with: 50%"La propriรฉtรฉ CSS correcte est width, la liste est donc reproduite exactement telle que publiรฉe, mais le tableau ne sera pas dimensionnรฉ tant que cette faute de frappe n'aura pas รฉtรฉ corrigรฉe dans votre propre copie.
Exemple 2: Guru_register.java
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class guru_register */ public class guru_register extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String first_name = request.getParameter("first_name"); String last_name = request.getParameter("last_name"); String username = request.getParameter("username"); String password = request.getParameter("password"); String address = request.getParameter("address"); String contact = request.getParameter("contact"); if(first_name.isEmpty() || last_name.isEmpty() || username.isEmpty() || password.isEmpty() || address.isEmpty() || contact.isEmpty()) { RequestDispatcher req = request.getRequestDispatcher("register_1.jsp"); req.include(request, response); } else { RequestDispatcher req = request.getRequestDispatcher("register_2.jsp"); req.forward(request, response); } } }
Explication du code :
Code Ligne 14: Nous dรฉfinissons ici le servlet guru_register, qui รฉtend HttpServlet.
Code Ligne 18: Il s'agit de la mรฉthode doPost(), qui est appelรฉe lorsque nous spรฉcifions POST comme attribut de mรฉthode dans le formulaire JSP ci-dessus.
Code Ligne 20-25: Ici, nous rรฉcupรฉrons les valeurs de la requรชte, ร savoir first_name, last_name, username, password, address et contact, en utilisant request.getParameter.
Code Ligne 27-32: Nous utilisons ici une condition ยซ si ยป pour vรฉrifier si l'un des paramรจtres rรฉcupรฉrรฉs de la requรชte est vide. Si c'est le cas, le contrรดle entre dans cette condition (first_name.isEmpty() || last_name.isEmpty() || username.isEmpty() || password.isEmpty() || address.isEmpty() || contact.isEmpty()) et nous rรฉcupรฉrons un objet RequestDispatcher ร partir de l'objet requรชte, qui renvoie la requรชte ร register_1.jsp. Nous incluons รฉgalement ici les objets requรชte et rรฉponse.
Code Ligne 33-37: Cette branche s'exรฉcute lorsqu'aucun paramรจtre n'est vide. Nous rรฉcupรฉrons un objet RequestDispatcher ร partir de l'objet requรชte, qui transmet la requรชte ร register_2.jsp. Ici, nous transmettons les objets requรชte et rรฉponse.
La diffรฉrence entre les deux branches est importante : include() exรฉcute register_1.jsp et renvoie le contrรดle au servlet, tandis que forward() La requรชte est transmise ร register_2.jsp et ne revient pas.
Exemple 3 : Register_2.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Success Page</title> </head> <body> <a><b>Welcome User!!!!</b></a> </body> </html>
Explication du code :
Code Ligne 10: Nous affichons ici le message de bienvenue. Cette page JSP est appelรฉe lorsque tous les paramรจtres sont renseignรฉs.
Lorsque vous exรฉcutez le code ci-dessus, vous obtenez le rรฉsultat suivant.
Sortie :
La page d'inscription affiche les six champs รฉtiquetรฉs avec un seul bouton ยซ Soumettre ยป, comme indiquรฉ ci-dessous.
Une fois tous les champs remplis et aprรจs avoir cliquรฉ sur ยซ Soumettre ยป, guru_register redirige vers register_2.jsp et la page de confirmation apparaรฎt.
Lorsque nous cliquons sur register_1.jsp, un formulaire s'affiche avec les champs prรฉnom, nom, nom d'utilisateur, mot de passe, adresse et coordonnรฉes. Une fois tous les champs remplis et le bouton ยซ Envoyer ยป cliquรฉ, le message ยซ Bienvenue ! ยป apparaรฎt.
Comment crรฉer un formulaire de connexion et de dรฉconnexion en JSP
Comme pour le formulaire d'inscription, nous allons maintenant crรฉer un formulaire de connexion et de dรฉconnexion.
Dans cet exemple, nous avons utilisรฉ un formulaire de connexion comportant deux champs, ยซ nom d'utilisateur ยป et ยซ mot de passe ยป, et un bouton de soumission.
Lorsque nous cliquons sur le bouton ยซ Envoyer ยป, nous recevons un message de bienvenue avec un bouton de dรฉconnexion.
Lorsque nous cliquons sur le bouton de dรฉconnexion, nous revenons au formulaire de connexion.
Exemple 1 : Register_3.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Login Form</title> </head> <body> <form action="guru_login" method="post"> <table style="with: 50%"> <tr> <td>UserName</td> <td><input type="text" name="username" /></td> </tr> <tr> <td>Password</td> <td><input type="password" name="password" /></td> </tr> </table> <input type="submit" value="Login" /></form> </body> </html>
Explication du code :
Code Ligne 10: Nous utilisons ici un formulaire dont l'action est la servlet guru_login.java. La mรฉthode de transmission des donnรฉes est POST.
Code Ligne 13-16: Nous utilisons ici un champ de saisie ยซ nom dโutilisateur ยป, qui est de type texte.
Code Ligne 17-20: Nous utilisons ici un champ de saisie ยซ mot de passe ยป, qui est de type mot de passe.
Code Ligne 22: Nous utilisons ici un bouton ยซ Soumettre ยป dont la valeur est ยซ Connexion ยป. En cliquant dessus, le contrรดle est transfรฉrรฉ au servlet guru_login, oรน les deux champs sont lus ร l'aide de l'objet requรชte.
Exemple 2: Guru_login.java (servlet)
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class guru_login */ public class guru_login extends HttpServlet { public guru_login() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String username = request.getParameter("username"); String password = request.getParameter("password"); if(username.isEmpty() || password.isEmpty() ) { RequestDispatcher req = request.getRequestDispatcher("register_3.jsp"); req.include(request, response); } else { RequestDispatcher req = request.getRequestDispatcher("register_4.jsp"); req.forward(request, response); } } }
Explication du code :
Code Ligne 5-9: Nous importons ici les classes nรฉcessaires dans le code.
Code Ligne 14: Nous dรฉclarons ici le servlet guru_login, qui รฉtend HttpServlet.
Code Ligne 21: Nous utilisons ici la mรฉthode doPost(), car le formulaire utilise la mรฉthode POST.
Code Ligne 23-24: Ici, nous lisons les paramรจtres ร l'aide de l'objet requรชte, c'est-ร -dire le nom d'utilisateur et le mot de passe.
Code Ligne 25-29: Nous utilisons ainsi une condition ยซ si ยป qui vรฉrifie si le nom d'utilisateur et le mot de passe sont vides. Si l'un des deux est vide, nous obtenons un objet RequestDispatcher qui renvoie le contrรดle ร register_3.jsp avec les objets de requรชte et de rรฉponse.
Code Ligne 30-34: Cette branche s'exรฉcute si les deux valeurs ne sont pas vides ; elle transmet ensuite la requรชte ร register_4.jsp avec les objets requรชte et rรฉponse.
Exemple 3 : Register_4.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Logged In</title> </head> <body> <table style="with: 50%"> <tr><td> <% String username = request.getParameter("username"); %> <a>Welcome <% out.println(username); %> User!!!! You have logged in.</a></td></tr> <tr></tr><tr><td></td><td></td><td><a href="register_3.jsp"><b>Logout</b></a></td></tr> </table> </body> </html>
Explication du code :
Code Ligne 12: Ici, nous rรฉcupรฉrons le paramรจtre ยซ username ยป de lโobjet requรชte et le stockons dans lโobjet chaรฎne de caractรจres username. Cela fonctionne car la fonction forward() conserve intactes la requรชte dโorigine, et donc ses paramรจtres.
Code Ligne 13: Ici, nous avons un message de bienvenue avec le nom d'utilisateur.
Code Ligne 14: Voici le lien de dรฉconnexion, qui renvoie l'utilisateur ร register_3.jsp.
Lorsque vous exรฉcutez le code ci-dessus, vous obtenez le rรฉsultat suivant.
Sortie :
L'ouverture du fichier register_3.jsp affiche les deux champs d'identification et un bouton de connexion.
Aprรจs avoir cliquรฉ sur le bouton Connexion, vous recevrez le message ci-dessous ainsi qu'un lien Dรฉconnexion.
Cliquer sur le lien ยซ Dรฉconnexion ยป vous ramรจne ร la page de connexion affichรฉe ici.
ร noter: Cet exemple ne compare que les valeurs vides ; par consรฉquent, tout nom dโutilisateur non vide est acceptรฉ. En production, lโauthentification doit รชtre vรฉrifiรฉe auprรจs dโun systรจme de stockage de donnรฉes et les mots de passe doivent รชtre hachรฉs, jamais stockรฉs en clair.
Traitement du formulaire JSP ร l'aide de getParameter()
Les formulaires sont la mรฉthode courante de collecte de donnรฉes pour le traitement web. Il faut envoyer des informations au serveur web, puis les rรฉcupรฉrer cรดtรฉ serveur.
Il existe deux mรฉthodes couramment utilisรฉes pour envoyer et rรฉcupรฉrer des informations au serveur Web.
Mรฉthode GET :
- Il s'agit de la mรฉthode par dรฉfaut pour transmettre les informations du navigateur au serveur Web.
- Il envoie les informations encodรฉes ajoutรฉes ร la page URL, sรฉparรฉs par un caractรจre ?.
- Il existe รฉgalement une limite de taille ; la recommandation classique est dโenviron 1024 caractรจres par requรชte, bien que la limite rรฉelle soit fixรฉe par le navigateur et le serveur plutรดt que par la spรฉcification HTTP.
- Il convient d'รฉviter d'envoyer des mots de passe et des informations sensibles via la mรฉthode GET.
Mรฉthode POST :
- La mรฉthode POST est la mรฉthode la plus fiable pour envoyer des informations au serveur.
- Il envoie les informations sous forme de corps de message sรฉparรฉ plutรดt que dans la barre d'adresse.
- Parce que les valeurs n'apparaissent jamais aprรจs le ? dans le URLElles ne sont pas stockรฉes dans l'historique du navigateur ni dans les journaux d'accรจs au serveur.
- Il est couramment utilisรฉ pour transmettre des informations sensibles.
JSP gรจre le traitement des donnรฉes de formulaire ร l'aide des mรฉthodes suivantes :
- getParameter() : utilisรฉ pour obtenir la valeur d'un seul paramรจtre de formulaire.
- getParameterValues() : utilisรฉ pour renvoyer les multiples valeurs d'un paramรจtre.
- getParameterNames() : utilisรฉ pour obtenir les noms de tous les paramรจtres.
- getInputStream() : utilisรฉ pour lire les donnรฉes binaires envoyรฉes par le client.
Exemple :
Dans cet exemple, nous avons utilisรฉ un formulaire comportant deux champs, ยซ nom dโutilisateur ยป et ยซ mot de passe ยป, et un bouton de soumission.
Action_form.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Form</title> </head> <body> <form action="action_form_process.jsp" method="GET"> UserName: <input type="text" name="username"> <br /> Password: <input type="text" name="password" /> <input type="submit" value="Submit" /> </form> </body> </html>
Action_form_process.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <h1>Form Processing</h1> <p><b>Welcome User:</b> <%= request.getParameter("username")%> </p> </body> </html>
Explication du code : Action_form.jsp
Code Ligne 10: Nous avons ici dรฉfini un formulaire dont l'action est traitรฉe par un autre. JSPDans l'attribut action, nous ajoutons la page JSP ร laquelle le formulaire doit รชtre soumis via la mรฉthode GET.
Ici, nous utilisons la mรฉthode GET pour transmettre les informations, c'est-ร -dire le nom d'utilisateur et le mot de passe.
Code Ligne 11-14: Ici, nous utilisons des champs comme le nom d'utilisateur et le mot de passe, qui sont des champs de texte, et nous rรฉcupรฉrons les donnรฉes saisies par l'utilisateur.
Ces donnรฉes peuvent รชtre rรฉcupรฉrรฉes ร l'aide de la mรฉthode getParameter. Un bouton ยซ Envoyer ยป permet รฉgalement de transmettre les valeurs des champs ร action_form_process.jsp.
Action_form_process.jsp
Code Ligne 14: Ici, nous rรฉcupรฉrons les valeurs des champs de saisie de action_form.jsp en utilisant la mรฉthode getParameter de l'objet requรชte.
Lorsque nous exรฉcutons le code ci-dessus, nous obtenons le rรฉsultat suivant.
Sortie :
Action_form.jsp affiche d'abord le formulaire ร deux champs prรฉsentรฉ ci-dessous.
Aprรจs la soumission, action_form_process.jsp affiche le nom d'utilisateur lu avec getParameter().
Lorsque nous exรฉcutons action_form.jsp, un formulaire s'affiche avec deux champs : nom d'utilisateur et mot de passe, ainsi qu'un bouton ยซ Envoyer ยป. Aprรจs avoir saisi ces informations, nous cliquons sur ยซ Envoyer ยป, et la requรชte est traitรฉe par la page suivante, qui affiche la page de traitement du formulaire avec un message de bienvenue.
Note de version : Les deux servlets ci-dessus importent javax.servlet, ce qui est correct pour Tomcat 9 et les versions antรฉrieures. Jakarta EE 9 a renommรฉ l'API ; par consรฉquent, sur Tomcat 10 et versions ultรฉrieures, toute importation de javax.servlet devient jakarta.servlet, ou l'application doit รชtre convertie avec l'outil de migration Apache Tomcat pour Jakarta EE.







