0% ont trouvé ce document utile (0 vote)
5 vues22 pages

Introduction aux Servlets Java EE

Transféré par

mehdi7jbali
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)
5 vues22 pages

Introduction aux Servlets Java EE

Transféré par

mehdi7jbali
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

Département Génie Informatique

Java Entreprise Edition


Pr. Aimad QAZDAR
[Link]@[Link]

30 septembre 2024
Servlets
Qu’est ce qu’une Servelet?
● Les servlets sont au serveur Web ce que les applets sont au navigateur pour le client.
● Une servlet est une classe Java, exécutée par un moteur de servlets, fonctionnant du côté
serveur au même titre que les CGI et les langages de script côté serveur tels que ASP ou
bien PHP
● Les servlets permettent donc de gérer des requêtes HTTP et de fournir au client une
réponse HTTP dynamique.
Navigateur web Serveur web
Requête HTTP
Conteneur de servlet
Method=GET ou POST

HttpRequest
Servlet
COOKIES
Réponse HTTP doGet()
HttpResponse doPost()

(HTML, javascript, css, XML)


HttpSession

33
Le protocole HTTP
● HTTP : HyperText Tranfert Protocol
(RFC 1945 et 2068)
− Protocole de rapatriement des documents
− Protocole de soumission de formulaires
● Fonctionnement (très simple en HTTP/1.0)
− Connexion
− demande (GET, POST) d’un document
− renvoi du document (status=200) ou d’une erreur
− déconnexion

34
Méthodes HTTP
● Une méthode, en HTTP, est une commande spécifiant un type de requête, i.e. elle
demande au serveur d’effectuer une action.
● Principales commandes en HTTP
− GET : méthode la plus courante pour demander une ressource,
− HEAD : méthode qui ne demande que des informations sur la ressource (sans demander la
ressource elle-même),
− POST : méthode utilisée pour transmettre des données en vue d’un traitement à une
ressource.

35
Méthode POST
● Le client envoie la requête
Entête de la requête

Post /Nom_Script HTTP/1.0


Méthode,chemin,version
REMOTE_ADDR: [Link]
Documents acceptés
HTTP_ACCEPT_LANGUAGE : fr
Accept : image/jpeg
Type et version du
User-Agent : Mozilla/4.0 navigateur ayant soumis la
requête.
*** saut de ligne ***
Var1=Value1&
Paramètres des différents
Var2=Value2
champs du formulaire.
Var3=Value3

corps de la requête

36
Méthode GET
● Le client envoie la requête

Entête de la requête

GET /Nom_Script?var1=val1&var2=val2&…. HTTP/1.0


REMOTE_ADDR: [Link]
HTTP_ACCEPT_LANGUAGE : fr
Accept : image/jpeg
User-Agent : Mozilla/4.0

corps de la requête est vide


37
37
HTTP : Réponse retournée

HTTP/1.0 200 OK Ligne de Status


Entête de la réponse
Date : Wed, 05Feb02 15:02:01 GMT
Server : Apache/1.3.24 Nom du Serveur
Mime-Version 1.0
Last-Modified : Wed 02Oct01 24:05:01GMT Dernière modification
Content-Type : Text/html Type de contenu
Content-legnth : 4205 Sa taille
*** saut de ligne ***
<HTML><HEAD> Le fichier à afficher au client
….
</BODY></HTML>

corps de la réponse

38
Architecture du package [Link]
● Toutes les servlets implémentent directement ou indirectement
l'interface Servlet, en dérivant une classe qui l'implémente: Servlet

− c'est-à-dire généralement la classe HttpServlet, elle-même issue de


GenericServlet.
● La classe GenericServlet ([Link]) définit une GenericSrvlet
classe abstraite (implémentation de base de l'interface Servlet).
service()

HttpServlet
doPost()
doGet()

NotreServlet
doPost()
doGet()

39
Fonctionnement d’une Servlet
● Lorsqu'une servlet est appelée par un client, la méthode service() est exécutée.
● Celle-ci est le principal point d'entrée de toute servlet et accepte deux objets en
paramètres:
− L'objet HttpServletRequest encapsulant la requête du client, c'est-à-dire qu'il contient
l'ensemble des paramètres passés à la servlet (informations sur l'environnement du client,
cookies du client, URL demandée, ...)
− L'objet HttpServletResponse permettant de renvoyer une réponse au client (envoyer des
informations au navigateur).

40
Développement d’une servlet
● Créer une classe étendant HttpServlet (qui implémente elle-même l'interface Servlet).
➔ La classe HttpServlet (dérivant de GenericServlet) permet de fournir une
implémentation de l'interface Servlet spécifique à HTTP.
● La classe HttpServlet redéfinit la méthode service en lisant la méthode HTTP utilisée par
le client, puis en redirigeant la requête vers une méthode appropriée.
● Les deux principales méthodes du protocole HTTP étant GET et POST, il suffit de redéfinir
la méthode adéquate afin de traiter la requête.

41
Développement d’une servlet
● La redéfinition de la méthode afin de traiter la requête :
− Si la méthode utilisée est GET, il suffit de redéfinir la méthode :
public void doGet(
HttpServletRequest request,
HttpServletResponse response
)
− Si la méthode utilisée est POST, il suffit de redéfinir la méthode :
public void doPost(
HttpServletRequest request,
HttpServletResponse response
)

42
HttpServletRequest
Méthode Description
String getMethod() Récupère la méthode HTTP utilisée par le client

String getHeader(String Key) Récupère la valeur de l'attribut Key de l'en-tête


String getRemoteHost() Récupère le nom de domaine du client
String getRemoteAddr() Récupère l'adresse IP du client
Récupère la valeur du paramètre Key (clé) d’un formulaire.
String getParameter(String Key) Lorsque plusieurs valeurs sont présentes, la première est
retournée

Récupère les valeurs correspondant au paramètre Key (clé) d'un formulaire,


String[] getParameterValues(String Key) c'est-à-dire dans le cas d'une sélection multiple (cases à cocher, listes à
choix multiples) les valeurs de toutes les entités sélectionnées
Retourne un objet Enumeration contenant la liste des noms des paramètres
Enumeration getParameterNames()
passés à la requête
String getServerName() Récupère le nom du serveur
String getServerPort() Récupère le numéro de port du serveur

43
HttpServletResponse

Méthode Description
String setStatus(int StatusCode) Définit le code de retour de la réponse
void setHeader(String Nom, String Valeur) Définit une paire clé/valeur dans les en-têtes
Définit le type MIME de la réponse HTTP, c'est-à-dire
void setContentType(String type)
le type de données envoyées au navigateur
void setContentLength(int len) Définit la taille de la réponse
Retourne un objet PrintWriter permettant d'envoyer
du texte au navigateur client. Il se charge de
PrintWriter getWriter()
convertir au format approprié les caractères Unicode
utilisés par Java
Définit un flot de données à envoyer au client, par l'intermédiaire
ServletOutputStream getOutputStream() d'un objet ServletOutputStream, dérivé de la classe
[Link]
void sendredirect(String location) Permet de rediriger le client vers l'URL location

44
Première Servlet

45
Structure d’un projet Web J2EE
● Le dossier Source Package contient les classes java
● Les dossier Web Pages contient les documents Web
comme les pages HTML, JSP, Images, Java Script,
CSS …
● Le dossier WEB-INF contient les descripteurs de
déploiement comme [Link]
● Le dossier Libraries permet de stocker les bibliothèques
de classes java ([Link])

46
Déploiement d’une servlet
● Pour que le Serveur Web reconnaisse une servlet, celle-ci doit être déclarée dans le
fichier [Link] qui se trouve dans le dossier WEB-INF.
● Le fichier [Link] s’appelle le descripteur de déploiement de Servlet.
● Ce descripteur doit déclarer principalement les éléments suivant :
− Le nom attribué à cette servlet
− La classe de la servlet
− Le nom URL à utiliser pour faire appel à cette servlet via le protocole HTTP.

47
[Link]

48
Tester la servlet

Code source coté Client

49
Gestion des servlets
Moteur de
Servlets
Créer un pool Thread Thread
de threads

Instancier la servlet
Servlet
Appeler la méthode init()

Initialisation
Affecter une requête à un thread Appeler la méthode service()
Requête HTTP 1
Exécution
Affecter une requête à un thread Appeler la méthode service() service
Requête HTTP 2

Réponse HTTP 1 Exécution


service
Réponse HTTP 2

Terminer le pool de threads

Appeler la méthode destroy()

50
Cycle de vie d’une Servlet
1. Le serveur crée un pool de threads auxquels il va pouvoir affecter chaque requête
2. La servlet est chargée au démarrage du serveur ou lors de la première requête
3. La servlet est instanciée par le serveur
4. La méthode init() est invoquée par le conteneur
5. Lors de la première requête, le conteneur crée les objets Request et Response
spécifiques à la requête
6. La méthode service() est appelée à chaque requête dans un nouveau thread. Les objets
Request et Response lui sont passés en paramètre
7. Grâce à l'objet request, la méthode service() va pouvoir analyser les informations en
provenance du client
8. Grâce à l'objet response, la méthode service() va fournir une réponse au client
9. La méthode destroy() est appelée lors du déchargement de la servlet, c'est-à-dire
lorsqu'elle n'est plus requise par le serveur. La servlet est alors signalée au garbage
collector .

51
TP2 : JEE

Création de servlets
L’objectif de ce TP est :

● La création de servlet,

● Le déploiement dans un serveur d’applications Tomcat.

52

Vous aimerez peut-être aussi