Vous êtes sur la page 1sur 23

Chapitre 2:

Les servlets
Servlet
1. Introduction
2. Qu'est-ce qu'une Servlet ?
3. Envois des requêtes HTTP?
4. Traitement des requêtes HTTP
Introduction :

Les API de Java EE peuvent se répartir en trois


grandes catégories :
• Les composants :
• On distingue habituellement deux familles
de composants :
 Les composants Web : Servlet et JSP
 Les composants Métier : EJB.
• Les services d’infrastructures.
• Les services de communication.
Servlet

Les composants Web :


Servlet : Elle permet de traiter les données envoyées par
l’utilisateur et de choisir la Vue à retourner à celui-ci. On
appelle cette partie : Contrôleur.

une servlet est une classe Java que Tomcat va utiliser.

Une servlet est en réalité une simple classe Java, qui a la


particularité de permettre le traitement de requêtes et la
personnalisation de réponses
3. Envoie des requêtes http:

Le navigateur envoie une requête http au serveur dans les situations


suivantes :

• l’utilisateur clique sur un lien hypertexte dans une page html


• L’utilisateur remplit une formulaire html dans une page web et
l’envoie
• L’utilisateur saisi une adresse URL dans la barre d’adresse du
navigateur et appuie sur entrer.

Par défaut le navigateur utilise la méthode GET pour envoyer des


requêtes dans toutes les événements précitées, cependant on peut lui
forcer à utiliser POST ou HEAD
3. Envoie des requêtes http:
GET :
C'est la méthode utilisée par le client pour récupérer une ressource web
du serveur via une URL.
Lorsqu'il reçoit une telle demande, le serveur ne fait pas que retourner
la ressource demandée, il en profite pour l'accompagner d'informations
diverses à son sujet, dans ce qui s'appelle les en-têtes ou headers HTTP
typiquement, on y trouve des informations comme la longueur des
données renvoyées ou encore la date d'envoi.

Post
La taille du corps du message d'une requête POST n'est pas limitée,
c'est donc cette méthode qu'il faut utiliser pour soumettre au serveur
des données de tailles variables, ou que l'on sait volumineuses. C'est
parfait pour envoyer des fichiers par exemple.
3. Envoie des requêtes http:

HEAd:
• Cette méthode est identique à la méthode GET, à ceci près que le
serveur n'y répondra pas en renvoyant la ressource accompagnée
des informations la concernant, mais seulement ces informations.

• Méthode HEAD, il renvoie seulement les en-têtes HTTP ! Il est


ainsi possible par exemple de vérifier la validité d'une URL ou de
vérifier si le contenu d'une page a changé ou non sans avoir à
récupérer la ressource elle-même : il suffit de regarder ce que
contiennent les différents champs des en-têtes.
4.Traitement des requêtes httpServlet

HTTPServlet définit pour chaque méthode une méthode


correspondante avec las signature suivante :

protected void doXXX(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException; {

• Get => DoGet()


• Post=> DoPost()
• HEAD => DoHead()

La classe HttpServlet offre une implémentation vide des méthodes


doXXX().Vous devez redéfinir ces méthodes pour implémenter la
logique métier de votre application.
4.Traitement des requêtes httpServlet

HttpServletRequest : cet obet contient la requête HTTP, et donne accès à toutes


ses informations, telles que les en-têtes (headers) et le corps de la requête.

HttpServletResponse : cet objet initialise la réponse HTTP qui sera renvoyée u


client, et permet de la personnaliser, en initialisant par exemple les en-têtes et le
corps (nous verrons comment par la suite).
Création
1. Création d'une Servlet ?
2. Mise en Place ?
3. Cycle de vie
4. Envoyer des données au client
1. Servlet
1. Servlet
2. Mise en Place

Maintenant, nous allons créer un fichier xml qui DOIT s'appeler


web.xml et que vous créerez dans le dossier WEB-INF de votre projet,
comme ceci :

Nom de la servlet

Classe de la servlet

L'intégralité de son contenu devra


Mapping de la servlet être placée entre les balises
2. Mise en Place
ll nous suffit de surcharger la méthode doGet() de la classe HttpServlet dans
notre servlet Test. Voici donc le code de notre servlet :

package com.monsite.servlets;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test extends HttpServlet {


public void doGet( HttpServletRequest request, HttpServletResponse
response ) throws ServletException, IOException{

}
}
2. Mise en Place
si votre navigateur vous affiche une
simple page blanche, c'est parce qu'il
considère la requête comme terminée
avec succès : si ce n'était pas le cas, il
vous afficherait un des codes et messages
d'erreur HTTP… (voir la figure
suivante). Si vous utilisez le navigateur
Firefox, vous pouvez utiliser l'onglet
Réseau de l'outil Firebug pour visualiser
qu'effectivement, une réponse HTTP est
bien reçue par votre navigateur (si vous
utilisez le navigateur Chrome, vous
pouvez accéder à un outil similaire en
appuyant sur F12 ).

un code HTTP 200 OK, qui signifie que la


requête s'est effectuée avec succès ;
3. Cycle de vie
• serveur d'applications Tomcat, c'est par défaut au premier appel
d'une servlet que son unique instance est créée.

• <load-on-startup>N</load-on-startup> permet de forcer le


chargement de la servlet dès le démarrage du serveur. où N doit être
un entier positif.

• Si dans la déclaration d'une servlet vous ajoutez une telle ligne,


alors vous ordonnez au serveur de charger l'instance de la servlet en
question directement pendant le chargement de l'application.

• Le chiffre N correspond à la priorité que vous souhaitez donner au


chargement de votre servlet.

• la ou les servlets ayant un load-on-startup initialisé à zéro sont les


premières à être chargées, puis 1, 2, 3, etc.
4. Envoyer des données au client

1. Modifier l'en-tête Content-Type de la réponse HTTP, pour préciser au client que


nous allons lui envoyer une page HTML, en faisant appel à la méthode
setContentType() de l'objet HttpServletResponse.

2. Appel à la méthode setCharacterEncoding() de l'objet HttpServletResponse dont


le but d'utiliser l'encodage UTF-8.

3. L’objet PrintWriter qui va nous permettre d'envoyer du texte au client, via la


méthode getWriter() de l'objet HttpServletResponse.

4. Via la méthode println() de l'objet PrintWriter. Nous écrivons alors du texte dans
la réponse.
À retenir :
Il est maintenant grand temps de revenir au modèle MVC : l'affichage de contenu HTML
n'ayant rien à faire dans le contrôleur (notre servlet), nous allons créer une vue et la mettre en
relation avec notre servlet.

1. Le client envoie des requêtes au serveur grâce aux méthodes du protocole HTTP,
notamment GET, POST et HEAD.

2. Le conteneur web place chaque requête reçue dans un objet HttpServletRequest, et place
chaque réponse qu'il initialise dans l'objet HttpServletResponse.

3. Le conteneur transmet chaque couple requête/réponse à une servlet : c'est un objet Java
assigné à une requête et capable de générer une réponse en conséquence.

4. La servlet est donc le point d'entrée d'une application web, et se déclare dans son fichier
de configuration web.xml.

5. Une servlet peut se charger de répondre à une requête en particulier, ou à un groupe entier
de requêtes.

6. Pour pouvoir traiter une requête HTTP de type GET, une servlet doit implémenter la
méthode doGet() ; pour répondre à une requête de type POST, la méthode doPost() ; etc.

7. Une servlet n'est pas chargée de l'affichage des données, elle ne doit donc pas s'occuper d
la présentation (HTML, CSS, etc.).
Exercice
Redéfinition de doPost
Page Vue
Exercice 2
Créer un projet Java EE qui permettra de réaliser la somme entre deux chiffres
entier et d’afficher le résultat après avoir cliqué sur «=».
Exercice 3
Créer un projet Java EE qui permettra d’afficher le tableau suivant contenant
les informations des personnes. Ces informations seront généré dans le
contrôleur.

Vous aimerez peut-être aussi