Exercice 1 - Une première JSP⚓︎
Le but de cet exercice est de créer une première JSP, qui sera accessible via une Servlet.
Nous allons créer un formulaire, contenant un seul champ de type nombre (<input type="number"/>
), qui permet, lorsqu'on clique sur
- Comme d'habitude, on commence par créer un projet, qu'on appellera
td3
, dans le groupidfr.univtours.polytech
. -
Dans le package
fr.univtours.polytech.td3.servlet
, créer une ServletListeServlet
, dont la méthodedoGet
créé une liste deString
vide, placée dans la requête avec la clefLISTE
, et qui redirige versafficheListe.jsp
☕ Code Java - méthode doGet 1 2
request.setAttribute("LISTE", new ArrayList<String>()); //(1)! request.getRequestDispatcher("afficheListe.jsp").forward(request, response);
- Dans la JSP
afficheListe.jsp
, nous allons utiliser une liste. Pour ne pas avoir d'erreur (uneNullPointerException
), on place dans la requête une liste vide au premier affichage.
Paramètres et Attributs en requête
On peut placer deux types d'objets dans la requête :
-
Des paramètres :
Depuis un formulaire, on peut placer des
parameter
. Ces sont desjava.lang.String
. Il n'est pas possible de placer un paramètre en requête via l'objet Java (on ne peut pas fairerequest.setParameter(clef, valeur)
).Les paramètres sont envoyés par le client au serveur.
-
Des attributs :
Dynamiquement, dans une Servlet par exemple, on peut placer des
attributes
. Ces sont desjava.lang.Objects
, qu'il faut donc caster lorsqu'on les manipule. On place des attributs en requête via l'objet Java :request.setAttribute(clef, valeur)
.Les attributs sont envoyés par le serveur (depuis une Servlet la plupart du temps) à lui-même (une JSP la plupart du temps, ou une autre Servlet).
- Dans la JSP
-
Déployer cette Servlet , en lui donnant (par exemple)
listeServlet
comme nom et/liste
comme URL permettant de l'exécuter. -
Créer la page JSP
afficheListe.jsp
, qui contient le formulaire avec le champ nombre, dont lename
esttaille
(c'est le nom du paramètre en requête).Placer la JSP dans le dossier 📂
src/main/webapp
.Java Server Page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
<%@page import="java.util.List"%><!--(1)!--> <html> <head> <title>Affiche une liste dynamique</title> <meta charset="UTF-8"/> </head> <body> <form action="liste" method="post"> <input type="number" name="taille" value="<%=((List<String>)request.getAttribute("LISTE")).size()%>"/><!--(2)!--> <input type="submit" name="Valider"/> </form> <table> <% List<String> liste = (List<String>)request.getAttribute("LISTE"); //(3)! for (String mot : liste) { %> <tr><td><%=mot %></td></tr> <% } %> </table> </body> </html>
-
Il s'agit d'une directive JSP.
Elle permet d'importer un objet Java nécessaire.
-
Il s'agit d'une expression JSP.
L'attribut
value
permet de donner une valeur à ce champ à l'affichage de la page. Ici, la valeur sera 0 au premier affichage (la taille de la liste vide), puis celle saisie précédemment aux suivants. -
Il s'agit d'un scriptlet.
On récupère la liste placée en attribut de la requête, et on affiche autant de ligne dans le tableau qu'il y a d'éléments dans la liste.
Où placer les JSP ?
Les JSP (ainsi que les pages HTML, le javascript, le CSS, ..., bref, tout le contenu Web) doivent être placées dans le dossier contenu web.
Par défaut, c'est le dossier 📂
src/main/webapp
: -
-
Enfin, dans la Servlet ajouter la méthode
doPost
, qui gère le clic de l'utilisateur surValider :☕ Code Java - méthode doPost 1 2 3 4 5 6 7
Integer taille = Integer.parseInt(request.getParameter("taille")); List<String> liste = new ArrayList<String>(); for (int i = 0; i < taille; i++) { liste.add("Bonjour !"); //(1)! } request.setAttribute("LISTE", liste); //(2)! request.getRequestDispatcher("afficheListe.jsp").forward(request, response); //(3)!
- On génère la liste avec autant de Bonjour ! que souhaité.
- On place cette liste en attribut de la requête, pour pouvoir la récupérer dans la JSP.
- On redirige la requête vers la JSP.
-
Vérifier que l'application est fonctionnelle via http://localhost:8080/td3/liste.