0% ont trouvé ce document utile (0 vote)
39 vues63 pages

Cours Java Servlet

Le document présente une introduction aux Servlets dans Jakarta EE, expliquant leur rôle en tant que contrôleurs dans le modèle MVC d'une application JEE. Il décrit la structure d'une Servlet, les méthodes doGet() et doPost(), ainsi que les différentes manières d'associer des routes à une Servlet, notamment par annotations ou via le fichier web.xml. Enfin, il aborde le processus de création et de test d'une Servlet à l'aide d'Eclipse.

Transféré par

ingkhadija1234
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues63 pages

Cours Java Servlet

Le document présente une introduction aux Servlets dans Jakarta EE, expliquant leur rôle en tant que contrôleurs dans le modèle MVC d'une application JEE. Il décrit la structure d'une Servlet, les méthodes doGet() et doPost(), ainsi que les différentes manières d'associer des routes à une Servlet, notamment par annotations ou via le fichier web.xml. Enfin, il aborde le processus de création et de test d'une Servlet à l'aide d'Eclipse.

Transféré par

ingkhadija1234
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

JEE : Servlet

Achref El Mouelhi

Docteur de l’université d’Aix-Marseille


Chercheur en programmation par contrainte (IA)
Ingénieur en génie logiciel

[email protected]

H & H: Research and Training 1 / 43


Plan
1 Introduction
2 Structure d’une Servlet
3 Première Servlet avec Eclipse
Routage par annotation
Routage dans web.xml
4 Tester la Servlet
5 Servlet multi-routes
6 Objet HttpServletRequest
7 Paramètres de requête
getParameter()
getParameterValues()
getParameterMap()
8 Rediriger vers une autre Servlet

H & H: Research and Training 2 / 43


Introduction

Jakarta EE

Servlet : le cœur d’une application JEE


H I ©
EL
Classe Java héritant de la classe HttpServlet
U
O
une réponse HTTP f E LM
Recevant une requête HTTP (de type GET, POST...) et retournant

r e
chèle MVC dans une application JEE
© A
Contrôleur du mod

H & H: Research and Training 3 / 43


Introduction

Jakarta EE

Vue Modèle
(page JSP) (Java Bean)

H I ©
U EL
O
f E LM
ch r e
Requête

©A
HTTP
Contrôleur
(Servlet)

Réponse
HTTP
Client Serveur

H & H: Research and Training 4 / 43


Structure d’une Servlet

Jakarta EE

Servlet : classe Java héritant de HttpServlet


package org.eclipse.controller;
H I ©
UEL
import javax.servlet.http.HttpServlet;
O
f E LM
r e
public class TestServlet extends HttpServlet {
ch
} ©A

H & H: Research and Training 5 / 43


Structure d’une Servlet

Jakarta EE
Explication

HttpServlet contient des méthodes abstraites, préfixées par


do(), associées aux différentes méthodes (verbes) HTTP.

H I ©
doGet() : s’exécute quand l’utilisateur demande une page (via la

EL
barre d’adresse, un lien hypertexte...)

O U
doPost() : s’exécute quand l’utilisateur envoie des données via
un formulaire par exemple
f E LM
...
ch r e
©A
Chaque méthode prend en paramètre :
HttpServletRequest : contenant des informations sur la
requête utilisateur
HttpServletResponse : permettant de personnaliser la réponse
à retourner à l’utilisateur

H & H: Research and Training 6 / 43


Structure d’une Servlet

Jakarta EE

Ajoutons les méthodes doGet() et doPost() à TestServlet

package org.eclipse.controller;

import javax.servlet.http.HttpServlet;
H I ©
EL
import javax.servlet.http.HttpServletRequest;

U
import javax.servlet.http.HttpServletResponse;

O
LM
public class TestServlet extends HttpServlet {

}
r e f E
protected void doGet(HttpServletRequest request, HttpServletResponse response) {

ch
©A
protected void doPost(HttpServletRequest request, HttpServletResponse response) {

}
}

H & H: Research and Training 7 / 43


Structure d’une Servlet

Jakarta EE

Mais quand cette Servlet sera exécutée ?


Quand l’utilisateur saisit une URL dans le navigateur, il envoie une
H
requête HTTP à notre contrôleur (qui est en vrai une Servlet)I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 8 / 43


Structure d’une Servlet

Jakarta EE

Mais quand cette Servlet sera exécutée ?


Quand l’utilisateur saisit une URL dans le navigateur, il envoie une
H
requête HTTP à notre contrôleur (qui est en vrai une Servlet)I ©
UEL
O
f E LM
ch r e
Et si on avait plusieurs Servlets, laquelle sera exécutée ?
©A
Chaque Servlet aura sa propre route (uniques)
La Servlet ayant la route demandée sera exécutée

H & H: Research and Training 8 / 43


Structure d’une Servlet

Jakarta EE

Comment associer une route à une Servlet ?


soit avec l’annotation @WebServlet
H I ©
UEL
soit dans le fichier web.xml O
f E LM
ch r e
©A

H & H: Research and Training 9 / 43


Structure d’une Servlet

Jakarta EE

Comment associer une route à une Servlet ?


soit avec l’annotation @WebServlet
H I ©
UEL
soit dans le fichier web.xml O
f E LM
ch r e
©A
Commençons par créer une Servlet avec Eclipse

H & H: Research and Training 9 / 43


Première Servlet avec Eclipse

Jakarta EE

Pour créer une Servlet sous Eclipse

Faire un clic droit sur src situé dans Java Resources de notre
projet
H I ©
Aller dans New et choisir Servlet
U EL
M O
E L par
Remplir le champ Java package:
f
re
org.eclipse.controller
c h (par example)
Remplir© A Class name: par un nom suffixé par le mot
le champ
Servlet : TestServlet (par example)
Cliquer sur Next

H & H: Research and Training 10 / 43


Première Servlet avec Eclipse Routage par annotation

Jakarta EE

Routage par annotation (par défaut)

On peut modifier ou supprimer l’URL Mappings. Remplaçons la


chaı̂ne existante (/TestServlet) par /mapage
H I ©
EL
Cliquer sur Next
M OU
f E L from superclass
Décocher la case Constructors
e
hr correspondantes aux deux méthodes
lesccases
Vérifier que A
doGet() ©et doPost sont cochées
Valider en cliquant sur Finish

H & H: Research and Training 11 / 43


Première Servlet avec Eclipse Routage par annotation

Jakarta EE

Le contenu généré par Eclipse

package org.eclipse.controller;

// les imports

@WebServlet("/mapage")
H I ©
public class TestServlet extends HttpServlet {

U EL
private static final long serialVersionUID = 1L;
O
E LM
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
f
} r e
response.getWriter().append("Served at: ").append(request.getContextPath());

ch
©A
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}

H & H: Research and Training 12 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

Routage dans web.xml


H I ©
EL permet de :
Le fichier web.xml situé dans WEB-INF de webapp
U
déclarer la Servlet
L MO
e
associer une URL àrunef E
A ch Servlet (Mapping URL/Servlet)

H & H: Research and Training 13 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

Si le fichier n’existe pas


Faire un clic droit sur WEB-INF de webapp de notre projet
H I ©
EL
Aller dans New et choisir Other
M OU
E
Saisir xml dans la zone de
f L
recherche

chr e
A
Choisir XML File
©
Cliquer sur Next et choisir le nom web.xml

H & H: Research and Training 14 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE
Contenu de web.xml

<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="
H I ©
WebApp_ID" version="5.0">
U EL
O
<display-name>cours-jee</display-name>
<welcome-file-list>
f E LM
ch r e
<welcome-file>index.html</welcome-file>

©A
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

H & H: Research and Training 15 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

<welcome-file-list>
Contient les différent formats fichiers qui peuvent être utilisés
H I ©
comme page d’accueil de l’application
U EL
M O
f E L dans webapp
Ces fichiers seront directement
Pas besoin d’uneh
c re pour les afficher
Servlet
© Avia la route / ou directement via leur nom
Accessibles

H & H: Research and Training 16 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

Dans web.xml, on déclare la Servlet avant </web-app>

...
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>org.eclipse.controller.TestServlet</servlet-class>
H I ©
EL
</servlet>

O U
f E LM
ch r e
©A

H & H: Research and Training 17 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

Dans web.xml, on déclare la Servlet avant </web-app>

...
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>org.eclipse.controller.TestServlet</servlet-class>
H I ©
EL
</servlet>

O U
Explication
f E LM
ch r e
©A
<servlet> et </servlet> : déclaration de la Servlet

<servlet-name> et </servlet-name> : permet d’attribuer un nom à la Servlet qu’on


utilisera plus tard

<servlet-class> et </servlet-class> : indique le chemin de la classe de la


Servlet

H & H: Research and Training 17 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

Autres sous balises disponibles pour Servlet

H I ©
EL
<description> et </description> : ajouter une description

OU
sur le fonctionnement de la Servlet (comme un commentaire)
M
E L
<load-on-startup> et </load-on-startup>
f : permet de

c hr
forcer le chargementede la Servlet lors de démarrage
... © A

H & H: Research and Training 18 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

N’oublions pas, le rôle du web.xml :


H I ©
EL
déclarer la Servlet (c’est fait)
M OU
EL si cela n’a pas été fait avec
faire le mapping (assurer le routage
les annotations) ref
A ch
©

H & H: Research and Training 19 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE
...
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/mapage</url-pattern>
</servlet-mapping>
</web-app>
H I ©
U EL
O
f E LM
ch r e
©A

H & H: Research and Training 20 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE
...
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/mapage</url-pattern>
</servlet-mapping>
</web-app>
H I ©
U EL
O
Explication
f E LM
ch r e
<servlet-mapping> et </servlet-mapping> : pour faire le mapping
A
Servlet/url
©
<servlet-name> et </servlet-name> : permet d’indiquer le nom de la
Servlet à appeler

<url-pattern> et </url-pattern> : indique l’URL qui provoquera l’appel


de la Servlet indiquée dans la la sous-balise précédente

H & H: Research and Training 20 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

Contenu de web.xml

<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="
https://jakarta.ee/xml/ns/jakartaee" xsi:schemaLocation="https://
jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-
H I ©
app_5_0.xsd" id="WebApp_ID" version="5.0">
U EL
O
LM
<servlet>

r e E
<servlet-name>TestServlet</servlet-name>
f
<servlet-class>org.eclipse.controller.TestServlet</servlet-class>
</servlet>
ch
<servlet-mapping>
©A
<servlet-name>TestServlet</servlet-name>
<url-pattern>/mapage</url-pattern>
</servlet-mapping>
</web-app>

H & H: Research and Training 21 / 43


Première Servlet avec Eclipse Routage dans web.xml

Jakarta EE

H I ©
Remarque
U EL
O
f E LM
Dans la suite de ce cours, on n’utilisera que le routage par annotation.

ch r e
©A

H & H: Research and Training 22 / 43


Tester la Servlet

Jakarta EE

Une seule étape à faire


H I ©
Cliquer sur Run
UEL
O
f E LM
Une page blanche affichée ayant comme

r e
adresse : http://localhost:8080/cours-jee/mapage
ch at: /cours-jee
contenuA
: Served
©

H & H: Research and Training 23 / 43


Tester la Servlet

Jakarta EE

Si on teste une autre URL inexistante


H I ©
Écrire dans la zone d’adresse UEL
O
http://localhost:8080/cours-jee/tapage
f E LM
ch r e
Une page HTTP 404 sera affichée

©A

H & H: Research and Training 24 / 43


Tester la Servlet

Jakarta EE

H I ©
EL
Comment afficher le Hello World

O U
Il faut modifier la Servlet (l’objet HttpServletResponse qui est
responsable de la réponse)
f E LM
ch r e
©A

H & H: Research and Training 25 / 43


Tester la Servlet

Jakarta EE
Nouveau contenu de la Servlet

public class TestServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,


H I ©
EL
HttpServletResponse response) throws ServletException,
IOException {
M OU
f E L
response.getWriter().print("Hello World");
}
c hr e
protected©
A
void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
doGet(request, response);
}
}

H & H: Research and Training 26 / 43


Tester la Servlet

Jakarta EE

Pour exécuter une deuxième fois


H I ©
EL
Cliquer sur Run
M OU
Choisir Continue without
f E L restarting (pas besoin de
c h re
redémarrer le serveur)

©A

H & H: Research and Training 27 / 43


Tester la Servlet

Jakarta EE
On peut indiquer l’encodage et le type du contenu de la réponse

protected void doGet(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {

// pour indiquer le type de réponse


response.setContentType("text/html");

H I ©
accents
U EL
// indiquer l'encodage UTF-8 pour éviter les problèmes avec les

O
LM
response.setCharacterEncoding("UTF-8");

r e f E
PrintWriter out = response.getWriter();

ch
out.println("Hello World");

©A
}

L’objet PrintWriter

s’obtient de l’objet response

permet d’envoyer un (ou des) message(s) à l’utilisateur

H & H: Research and Training 28 / 43


Tester la Servlet

Jakarta EE
Pour retourner une page HTML complète

protected void doGet(HttpServletRequest request,


HttpServletResponse response) throws ServletException,
IOException{
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
H I ©
PrintWriter out = response.getWriter();
UEL
out.println("<!DOCTYPE html>");
O
out.println("<html>");
out.println("<head>");
f E LM
ch r e
out.println("<meta charset=\"utf-8\" >");

©A
out.println("<title>Projet JEE</title>");
out.println("</head>");
out.println("<body>");
out.println("Hello World");
out.println("</body>");
out.println("</html>");
}

H & H: Research and Training 29 / 43


Tester la Servlet

Jakarta EE

Constats
Beaucoup de code dans la Servlet (trop long) pour un affichage.
simple
H I ©
UEL
O
Violation du modèle MVC : le contrôleur n’affiche pas de résultat.

f E LM
ch r e
©A

H & H: Research and Training 30 / 43


Tester la Servlet

Jakarta EE

Constats
Beaucoup de code dans la Servlet (trop long) pour un affichage.
simple
H I ©
UEL
O
Violation du modèle MVC : le contrôleur n’affiche pas de résultat.

f E LM
ch r e
Solution ©A
Utiliser des vues pour l’affichage (chapitre suivant).

H & H: Research and Training 30 / 43


Servlet multi-routes

Jakarta EE

A une Servlet peuvent être associées plusieurs routes


@WebServlet({"/route1", "/route2",... /routeN})
H I ©
UEL
O
f E LM
Remarque
ch r e
©A
Pour récupérer la route qui a permis d’exécuter la Servlet, on utilise
l’objet de type HttpServletRequest.

H & H: Research and Training 31 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Protocole route
Scheme ServerPort ServletPath

ServerName ContextPath
H I ©
Parameter

UEL
O
f E LM
ch r e
http://localhost:8080/nom-projet/route-servlet?param1=value1&param2=value2
©A RequestURI

RequestURL

H & H: Research and Training 32 / 43


Objet HttpServletRequest

Jakarta EE

Comment récupérer toutes ces informations ?

Tout est défini dans l’objet de type HttpServletRequest.

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 33 / 43


Objet HttpServletRequest

Jakarta EE

Comment récupérer toutes ces informations ?

Tout est défini dans l’objet de type HttpServletRequest.

H I ©
UEL
Exemples O
f E LM
Il suffit de préfixer le nom des propriétés précédentes par get
ch r e
A
request.getContextPath()
©
request.getServletPath()
request.getServerPort()
...

H & H: Research and Training 33 / 43


Objet HttpServletRequest

Jakarta EE
Exercice 1

Créez une Servlet CalculServlet accessible via une des quatre routes suivantes

/calcul/plus
/calcul/moins
H I ©
/calcul/fois
U EL
O
/calcul/div
f E LM
ch r e
La Servlet doit afficher chaque fois la deuxième partie de la route demandé

plus ©A
moins
fois
div

H & H: Research and Training 34 / 43


Paramètres de requête

Jakarta EE

Récupérer les paramètres d’une requête

Mais, une requête peut avoir de paramètres (par example


/mapage?nom=Wick&prenom=John)
H I ©
UEL
O
Comment, dans ce cas, récupérer les paramètres ?

f E LM
ch r e
©A

H & H: Research and Training 35 / 43


Paramètres de requête

Jakarta EE

Récupérer les paramètres d’une requête

Mais, une requête peut avoir de paramètres (par example


/mapage?nom=Wick&prenom=John)
H I ©
UEL
O
Comment, dans ce cas, récupérer les paramètres ?

f E LM
ch r e
Solution ©A
request.getParameter("nomParameter");

H & H: Research and Training 35 / 43


Paramètres de requête getParameter()

Jakarta EE
Exemple de récupération et d’affichage de paramètres de la requête

protected void doGet(HttpServletRequest request,


HttpServletResponse response) throws ServletException,
IOException {

H I ©
EL
String nom = request.getParameter("nom");
String prenom = request.getParameter("prenom");
O U
LM
PrintWriter out = response.getWriter();

}
r e E
out.print("Hello " + nom + " " + prenom);
f
ch
©A

H & H: Research and Training 36 / 43


Paramètres de requête getParameter()

Jakarta EE
Exemple de récupération et d’affichage de paramètres de la requête

protected void doGet(HttpServletRequest request,


HttpServletResponse response) throws ServletException,
IOException {

H I ©
EL
String nom = request.getParameter("nom");
String prenom = request.getParameter("prenom");
O U
LM
PrintWriter out = response.getWriter();

}
r e E
out.print("Hello " + nom + " " + prenom);
f
ch
©A
Remarque

Si le paramètre n’est pas présent, on peut avoir une exception.

H & H: Research and Training 36 / 43


Paramètres de requête getParameter()

Jakarta EE

Il est recommandé de vérifier si la valeur du paramètre est non nulle avant de


l’utiliser

protected void doGet(HttpServletRequest request,


HttpServletResponse response) throws ServletException,
IOException {
H I ©
String nom = request.getParameter("nom");
U EL
String prenom = request.getParameter("prenom");
O
PrintWriter out = response.getWriter();
f E LM
ch r e
if (nom != null && prenom != null) {

©A
out.print("Hello " + nom + " " + prenom);
} else {
out.print("Hello world");
}
}

H & H: Research and Training 37 / 43


Paramètres de requête getParameter()

Récupérer les paramètres d’une requête

À ne pas confondre
H I ©
EL
OU
Les paramètres de requête : concept relatif aux requêtes HTTP
M
Les attributs de requête : E
f L introduit dans JEE (à voir dans
concept

chr
le prochain chapitre) e
© A

H & H: Research and Training 38 / 43


Paramètres de requête getParameter()

Jakarta EE

Exercice 2

Modifiez CalculServlet pour qu’elle

H I ©
accepte deux paramètres a et b
U EL
O
LM
Si la route demandée est

e f E
/calcul/plus?a=2&b=5, alors la Servlet affiche le résultat de l’addition.
r
ch
/calcul/moins?a=2&b=5, alors la Servlet affiche le résultat de la soustraction.

©A
/calcul/fois?a=2&b=5, alors la Servlet affiche le résultat de la multiplication.
/calcul/div?a=2&b=5, alors la Servlet affiche le résultat de la division.

H & H: Research and Training 39 / 43


Paramètres de requête getParameterValues()

Jakarta EE
Si le paramètre est présent plusieurs fois dans l’URL avec le même nom, alors on peut
utiliser getParameterValues()

protected void doGet(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {

PrintWriter out = response.getWriter();


H I ©
EL
String[] noms = request.getParameterValues("nom");
if (noms != null) {
for (String nom : noms) {
O U
}
out.print("Hello " + nom);

f E LM
}
}
ch r e
©A

H & H: Research and Training 40 / 43


Paramètres de requête getParameterValues()

Jakarta EE
Si le paramètre est présent plusieurs fois dans l’URL avec le même nom, alors on peut
utiliser getParameterValues()

protected void doGet(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {

PrintWriter out = response.getWriter();


H I ©
EL
String[] noms = request.getParameterValues("nom");
if (noms != null) {
for (String nom : noms) {
O U
}
out.print("Hello " + nom);

f E LM
}
}
ch r e
©A
Exemple d’URL pour tester

http://localhost:8080/test-jee/home?nom=wick&nom=dalton

H & H: Research and Training 40 / 43


Paramètres de requête getParameterValues()

Jakarta EE

Exercice 3

Créez une Servlet MoyenneServlet accessible via la route


H I ©
/moyenne.
U EL
O
En allant sur
f E LM
ch r e
localhost:8080/cours-jee/moyenne?note=12&note=15, la
moyenne des notes passées en paramètre sera affichée.
©A
Le nombre de notes est variable.

H & H: Research and Training 41 / 43


Paramètres de requête getParameterMap()

Jakarta EE
Pour récupérer tous les paramètres dans un Map, on peut utiliser getParameterMap()

protected void doGet(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {

PrintWriter out = response.getWriter();


Map<String, String[]> params = request.getParameterMap();
for (var param : params.entrySet()) {
H I ©
out.print(param.getKey());
for (var value : param.getValue()) {
U EL
O
LM
out.print(value);

}
}

r e f E
}
ch
©A

H & H: Research and Training 42 / 43


Paramètres de requête getParameterMap()

Jakarta EE
Pour récupérer tous les paramètres dans un Map, on peut utiliser getParameterMap()

protected void doGet(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {

PrintWriter out = response.getWriter();


Map<String, String[]> params = request.getParameterMap();
for (var param : params.entrySet()) {
H I ©
out.print(param.getKey());
for (var value : param.getValue()) {
U EL
O
LM
out.print(value);

}
}

r e f E
}
ch
©A
Exemple d’URL pour tester

http://localhost:
8080/test-jee/home?nom=wick&nom=dalton&genre=homme&age=45

H & H: Research and Training 42 / 43


Rediriger vers une autre Servlet

Jakarta EE

Rediriger vers une autre Servlet annotée par @WebServlet("/MaServlet")

response.sendRedirect("MaServlet");

H I ©
UEL
O
f E LM
ch r e
©A

H & H: Research and Training 43 / 43


Rediriger vers une autre Servlet

Jakarta EE

Rediriger vers une autre Servlet annotée par @WebServlet("/MaServlet")

response.sendRedirect("MaServlet");

H I ©
UEL
O
Ne pas mettre "/" avant MaServlet.

f E LM
ch r e
©A

H & H: Research and Training 43 / 43


Rediriger vers une autre Servlet

Jakarta EE

Rediriger vers une autre Servlet annotée par @WebServlet("/MaServlet")

response.sendRedirect("MaServlet");

H I ©
UEL
O
Ne pas mettre "/" avant MaServlet.

f E LM
r e
ch l’URL depuis le contextPath
A
On peut aussi reconstruire
©
response.sendRedirect(request.getContextPath() + "/MaServlet");

H & H: Research and Training 43 / 43

Vous aimerez peut-être aussi