Chapitre 1
Premiers pas avec Java EE
Pr. Ennaji Fatima Zohra
27/04/2021
Introduction
La plateforme java se compose de 3 éditions : l’Edition Standards J2SE, l’Edition
Entreprise JEE et l’Edition Micro J2ME.
J2SE : Fait la base de la plateforme Java, elle est utilisée pour développer
essentiellement les applications de bureau et les applets. Elle comporte un ensemble
de packages comme : [Link], [Link], [Link], [Link], [Link] et bien sûr
d’autres.
27/04/2021 Les différentes distributions de Java 2
Introduction
• JEE : Cette édition est basée sur J2SE et inclut un nombre de technologies comme
les servlets, Java Server Pages et Entreprise Java Beans. Elle est utilisée
essentiellement pour développer les applications d’entreprise qui tournent côté
serveur (Architecture n-tiers).
• J2ME : Cette édition est une version légère de J2SE conçue pour les dispositifs qui
possèdent une mémoire et une unité de calcul faible comme les téléphones, les
PDA…etc.
• Normalement l’apprentissage de la technologie JEE peut être subdivisé en trois
grandes étapes:
– Développement des composants web : Servlets, JSP, Conteneurs de Servlets, framework de
présentation: JSF, Spring MVC …etc.
– Développement des composant métier : EJB, Persistance : Hibernate, topLink …
– Conception des architectures logiciels .
27/04/2021 3
Historique
27/04/2021 4
Préparation de l’environnement de développement
• Pour commencer à développer des composant web à base
des Servlets vous devez disposer des outils suivants:
1. JDK : téléchargeable sur :
« [Link] »
2. La documentation du JDK et la documentation de l’API des Servlets
3. Un conteneur de Servlets : de préférence Tomcat
4. Un IDE.
5. Une copie de la spécification des servlets.
27/04/2021 5
C’est quoi une Servlet
Une servlet est une entité qui s’exécute côté serveur. En d’autre termes, 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.
Les tâches du serveur :
Chaque serveur qui offre des services aux clients distants doit accomplir deux tâches principales :
• Gérer les requêtes des clients: la programmation au niveaux des sockets, extraction des
informations de la requête client et l’implémentation des protocoles client-serveur comme
FTP et HTTP.
• Créer une réponse à poster aux clients: varie d’un service à un autre, par exemple dans le cas
d’un serveur HTTP qui héberge des applications web, la réponse est créer dynamiquement, la
logique métier change en permanence, chaque client exige une vue personnalisée (langue,
symbole monétiques, temps local…etc.)
27/04/2021 6
C’est quoi une Servlet
• On ne peux pas développer un programme sous forme d’un seul module qui gère
touts ces tâches car un simple changement dans la logique métier va entraîner la
modification de tout le programme.
• Une meilleure conception consiste à subdiviser le code en deux parties : une qui
gère la communication réseau et l’implémentation du protocole HTTP. L’autre
partie s’occupe de la logique métier. Et définir une interface standard entre les
deux parties.
• En effet, le conteneur de servlets va les transmettre à votre application, et plus
précisément aux servlets et filtres que vous avez éventuellement mis en place.
27/04/2021 7
Conteneur de Servlets
Les serveurs web java utilisent un module séparé pour charger et exécuter les
servlets. Ce module dédié à la gestion des servlets s’appelle le conteneur des
servlets ( Servlet Container / Servlet Engine).
27/04/2021 8
Tomcat
Plusieurs conteneurs de servlets existe dans le marché :Tomcat (Apache), Resin (Caucho
Technology), Jrun (Macromedia), WebLogic (BEA), et WebSphere (IBM). WebSphere et WebLogic
sont plus que des simples conteneurs de servlets, ils supportent les EJB et JMS et d’autres
technologies JEE.
Tomcat est un conteneur de servlets développé sous le projet Jakarta (ASF : Apache Software
Fondation). Nous avons choisis Tomcat pour plusieurs raisons :
- Gratuit et open source
- Implémente la dernière spécification des servlets et JSP
- Il contient un serveur web (Standalone)
27/04/2021 9
Première Servlet
Dans cette exemple on va voir en bref les quatre étapes de base nécessaires pour
développer et exécuter une servlets : codage, compilation, déploiement et exécution.
1. codage : voir la diapositive suivante
2. compilation : eclipse permet de gérer la compilation de manière automatique pour les
projets de taille moyenne, pour les projets de grandes tailles prévoir un outil de gestion
de build comme Ant ou Maven.
3. déploiement : le déploiement se fait en deux étapes :
création de la structure des répertoires
création du descripteur de l’application web : [Link]
4. exécution
27/04/2021 10
Première Servlet
Ce qu'il faut retenir pour le moment :
• Une servlet HTTP doit hériter de la classe abstraite HttpServlet ;
• Une servlet doit implémenter au moins une des méthodes doXXX(), afin d'être capable
de traiter une requête entrante.
27/04/2021 11
Première Servlet et Descripteur de déploiement
27/04/2021 12
Première Servlet et Descripteur de déploiement
Le résultat trouvé signifie deux choses:
• notre mapping a fonctionné et que notre serveur a bien contacté notre servlet !
• notre serveur nous retourne le code d'erreur 405 et nous précise que la
méthode GET n'est pas supportée par la servlet que nous avons associée à
l'URL…
27/04/2021 13
Première Servlet et Descripteur de déploiement
27/04/2021 14
Envoyer des données au client
public class PremiereServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
[Link]("text/html");
[Link]( "UTF-8" );
PrintWriter out = [Link]();
[Link]("<!DOCTYPE html>");
[Link]("<html>");
[Link]("<head>");
[Link]("<meta charset=\"utf-8\" />");
[Link]("<title>Test</title>");
[Link]("</head>");
[Link]("<body>");
[Link]("<p>Ceci est une page générée depuis une servlet.</p>");
[Link]("</body>");
[Link]("</html>");
}
}
27/04/2021 15
Cycle de vie d’une Servlet
• Quand une servlet est demandée pour la
première fois ou quand l'application web
démarre, le conteneur de servlets va créer une
instance de celle-ci et la garder en mémoire
pendant toute l'existence de l'application.
• La même instance sera réutilisée pour chaque requête entrante dont les URL
correspondent au pattern d'URL défini pour la servlet. Dans notre exemple, aussi
longtemps que notre serveur restera en ligne, tous nos appels vers
l'URL /PremiereApplication/PremierePage seront dirigés vers la même et unique
instance de notre servlet, générée par Tomcat lors du tout premier appel.
27/04/2021 16
Cycle de vie d’une Servlet
L'instance d'une servlet est-elle créée lors du premier appel à cette servlet, ou bien
dès le démarrage du serveur ?
• Avec Tomcat, c'est par défaut au premier appel d'une servlet que son unique
instance est créée.
• Ce mode de fonctionnement est configurable en utilisant la balise facultative :
<load-on-startup>N</load-on-startup>, 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 (L'ordre est établi du plus petit au plus grand).
27/04/2021 17
L’API des Servlets
La spécification des Servlets 3.1 JSR340 offre un Framework de
communication entre les servlets et leurs conteneur indépendamment de la
plateforme et du conteneur des servlets. Ce framework se compose d’un
ensemble de classes et interfaces (Servlet API).
La tâche des développeurs de servlets se résume dans la maîtrise de cette
API, car tous les conteneurs des servlets respectent la spécification JSR340
et donc offrent une implémentation de l’API des Servlets.
L’API des Servlets comporte 2 packages : « [Link] » et
« [Link] »
Le premier package contient des interfaces et des classes génériques
indépendantes de tout protocole parmi lesquelles on peut citer les classes
suivantes.
27/04/2021 18
L’API des Servlets
27/04/2021 19
L’API des Servlets
[Link] : Cette interface forme le cœur de l’API. Chaque servlet
doit implémenter cette interface directement ou indirectement, elle définit 5
méthodes :
• init() : cette méthode est appelée par le conteneur des servlets pour effectuer
des opérations d’initialisation.
• Service() : cette méthode est appelée par le conteneur des servlets pour servir
chaque requête du client.
• Destroy() : cette méthode est appelée par le conteneur des servlets pour
libérer toutes les ressources utilisées par la servlet.
• getServletConfig : retourne des informations concernant les paramètres
d’initialisation et du démarrage de la servlet, elle retourne un objet de type
ServletConfig encapsulant tous les paramètres d’initialisation de la servlet.
• getServletInfo : retourne des informations sur la servlet comme l’auteur la
version et les droit d’auteur.
27/04/2021 20
L’API des Servlets
[Link] : C’est une classe abstraite utilisée comme
adaptateur de l’interface [Link]. Elle ajoute d’autres méthodes
pour la journalisation.
[Link] : Cette interface représente la requête envoyée par
le client indépendamment de tout protocole.
[Link] : Cette interface représente la réponse envoyée
par le serveur, elle définit des méthodes qui permettent d’envoyer une réponse
au client indépendamment de tout protocole.
27/04/2021 21
L’API des Servlets
27/04/2021 22
L’API des Servlets
Le deuxième package ([Link]) offre les fonctionnalités de base pour les
servlets qui traitent les requêtes http. Les interfaces et les classes de ce package
étendent celles du package [Link], parmi lesquelles on peut citer :
[Link] : C’est une classe abstraite qui étend la classe
GenericServlet. Elle définit une nouvelle méthode
protected void service(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException.
[Link] : Cette interface représente la requête
envoyée par le client selon le protocole http. Elle est utilisé pour extraire des
informations comme les entêtes http, les cookies et les paramètres envoyés par le
client.
[Link] : Cette interface représente la réponse
envoyée par le serveur, elle définit des méthodes qui permettent d’envoyer une
réponse au client selon le protocole http. Elle définit des méthodes pour
personnaliser l’entête de la réponse et spécifier le type du contenu envoyé…etc.
27/04/2021 23
L’API des Servlets
27/04/2021 24
Avantages et inconvénients de L’API des Servlets
Avantage:
• Flexibilité : chaque fois qu’on veut ajouter une nouvelle fonctionnalité au serveur il suffit
d’ajouter une nouvelle servlet et la déployer dans le serveur.
• Séparation des responsabilités : Le serveur se charge de la connexion réseau et
l’implémentation des protocoles tandis que l’interprétation des requêtes clients est une
tâche délégué au servlets.
• Java API : on tire profit d’une api riche adopté à large échelle dans l’industrie du logiciel.
• Portabilité : WORA « write once, run anywere ».
Inconvénients:
• Respect strict de la spécification par les conteneur de servlets.
• La plupart des conteneur des servlets support seulement le protocole http (manque de
support du ftp, smtp, et les protocoles propriétaires). Car le spécification impose
seulement l’implémentation du protocole http.
27/04/2021 25
Conclusion
Dans ce premier chapitre nous avons introduit les concepts de base des servlets et des
conteneurs de servlets, nous avons réalisé un exemple simple qui affiche du texte sur le
navigateur, nous avons ensuite donné une vue d’ensemble de l’API des servlets en présentant ses
principales classes et interfaces.
Pour résumé : une servlet est une classe java qui s’exécute côté serveur, elle peut être
utilisée par un serveur pour étendre ses fonctionnalités de manière flexible et pour générer les
sorties désirées de manière dynamique en réponse à des requêtes que les clients envoient
suivant un protocole donné.
Durant tout ce cours on va centrer notre étude sur les servlets http, c’est le protocole qui
vous intéresse le plus en tant que des développeurs de composants web.
27/04/2021 26