Patrick Albers – Oriana Licchelli
Plan
Application Web
– Servlet
– JDBC
– JSP
2
Architecture 3-tiers
fonctions d'affichage,
il ne fait que des
requêtes vers le
effectue tous les calculs
serveur
ou fait des requêtes vers
d'autres serveurs
additionnels (e.g. vers de
SGBD)
4
Application Web
Assemblage de composants de serveurs Web, de contenu et
d’informations de configuration
Conteneur Web = environnement d’exécution d’une application Web
Plate-forme JEE est une solution portable, sécurisée et standardisée, où
c’est possible de spécifier :
– le cycle de vie des composants
– les comportements que le composant implémente
– les services que le serveur rend aux composants
Les spécifications JEE définissent plusieurs composants Web
– Servlets Java (“servlets”)
– Java Server Pages (JSP)
5
Conteneur Web
Pour exécuter des applications Web, il faut utiliser un
conteneur Web
De nombreuses versions commerciales :
– Tomcat Server d’Apache
– JBoss
– WebSphere Application Server d’IBM
Nous utiliserons Apache Tomcat
6
Apache Tomcat
Écrit en Java
Il peut être utilisé sur n’importe quel système disposant
d’une machine virtuelle
Il est disponible gratuitement sous forme d’une licence
Open Source
Il fournit les bibliothèques de façon à concevoir des
applications web
7
Hiérarchie des répertoires Tomcat
bin – scripts de lancement et d’arrêt du
Serveur Tomcat
common/lib ou common/classes – jar et
*.class utilisés par Tomcat pour
fonctionner.
conf – fichiers de configuration
(server.xml, web.xml et tomcat-
users.xml)
logs – fichiers de logs relatifs à des
erreurs
shared/lib – fichiers jar communs à
toutes les Servlets
webapps – zone de déploiement
8
Déploiement des application Web
Une application Web est contenue dans un répertoire physique
sur le serveur (dans le répertoire WebApps)
Application
Web
9
Application Web
Le déploiement va permettre d’indiquer à Tomcat (conteneur Web):
– où se trouve le répertoire physique de votre application Web
– quel est le contexte de l’application Web
Un contexte constitue une vue sur le fonctionnement de l’application
Web, et il permet d’accéder à chacune des ressources de
l’application
Pour accéder à une ressource, on peut utiliser l’adresse :
http://localhost:8080/NomApplication/NomRessource
localhost = Adresse du Serveur
8080 = Port
NomApplication = Contexte de l’application Web
NomRessource = Nom de la ressource que nous intéresse
10
Déclaration serveurs d'applications
Lancer Eclipse et vérifier que le workspace d’Eclipse
pointe bien sur un répertoire sans espaces
1) Téléchargez Eclipse JavaEE et désarchivez
2) Téléchargez Tomcat et désarchivez
3) Lancez Eclipse avec un nouveau workspace et
faire le lien entre Eclipse et Tomcat
●
dans le menu : Window>Preferences>Server>RuntimeEnvironment,
cliquez sur le bouton Add
●
Choisissez la bonne version de Tomcat (11)
●
Recopiez le chemin du répertoire où se trouve Tomcat
●
Puis cliquez sur « Finish » et « Apply and close »
11
Déclaration serveurs d'applications
4) Allez dans l’onglet Servers (Window>Show
view>Servers), cliquez sur le lien pour créer
un nouveau serveur (ou bouton droit>new
server), cliquez sur Next puis Finish.
Ne démarrez pas le serveur tout de suite
(flèche verte)
5) double cliquez sur le nom du serveur :
Tomcat. Dans « Server Locations »,
sélectionnez « use Tomcat installation ».
Sauvez la configuration en tapant Ctrl-S.
12
Déclaration serveurs d'applications
Cette option permet à Eclipse de modifier
Tomcat, les changements seront alors visibles
aussi via un navigateur en dehors d’Eclipse.
6) Pour voir si cela fonctionne, démarrez le
serveur Tomcat en cliquant sur la flèche verte.
Puis dans le navigateur, allez à l’adresse :
http://localhost:8080
13
Déclaration serveurs d'applications
7) Ouvrez le fichier conf/tomcat-users.xml, qui
se trouve dans le répertoire de tomcat, et
ajoutez :
<role rolename="manager-gui"/>
<user password="network" roles="manager-gui"
username="tomcat">
8) Dans http://localhost:8080, cliquez sur
« Manager App », pour accéder aux
applications déployées sur Tomcat.
14
Tomcat Manager App
9) Choisissez /examples
Puis testez les différents
servlets
Visualisez le code de :
HelloWorld
15
Servlet
Les serveurs Web sont capables de renvoyer des fichiers présents
sur le serveur en réponse à une requête d’un client
Problème
– pour envoyer une page HTML contenant par exemple une liste
d’articles répondant à différents critères, il faut la créer
dynamiquement
Solution
– Servlets Java
Définition
– Un « servlet » est un programme qui s’exécute du côté
serveur.
Il reçoit une requête du client, il effectue des traitements et
renvoie le résultat au client.
Un servlet peut être invoqué plusieurs fois en même temps
pour répondre à plusieurs requêtes simultanées.
16
Exécution d’un Servlet
Le client effectue une requête qui est
envoyée via le protocole HTTP au serveur
Le serveur doit exécuter le servlet en charge
de la requête
– Il vérifie si c’est la première exécution du servlet
– Si oui, il crée un objet (instance) du servlet
– Il appelle cette instance du servlet en passant les
informations de la requête
Le servlet crée la réponse en format HTML et
l’envoie au client via le protocole HTTP
17
Servlet : API Java
Langage utilisé = Java
– avantages : portabilité, accès à toutes les APIs de Java
(JDBC pour l’accès aux bases de données, etc)
Outil de développement : Java Server Development Kit (JSDK)
API servlet : ensemble de classes dans deux packages
– javax.servlet - classes pour développer des servlets
génériques indépendantes d’un protocole
– javax.servlet.http - classes pour développer des servlets qui
reposent sur le protocole HTTP utilisé par les serveurs Web
– le protocole HTTP a des méthodes comme GET, POST,
PUT, DELETE et TRACE
– la classe javax.servlet.http.HttpServlet a les méthodes :
doGet, doPost, doPut, doDelete, doTrace et service.
18
Structure d’un Servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{ ... }
public void doPost (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{ ... }
public void service (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{ ... }
19
Servlet : exemple Hello world
1) créez le projet Dynamic Web Project :
helloProject.
2) Choisissez la cible : « Target runtime » sur Tomcat, et cliquez sur Next et sur
Finish.
Les fichiers source Java devront se trouver dans la répertoire Java Ressources
> src
3) Créez le paquetage helloProject dans src
4) Créez le servlet HelloWorld dans ce paquetage, vérifiez que l’URL est
bien /HelloWorld, et choisissez la méthode doGet
5) Remplacez le code de doGet par le code de
examples/servlets/Hello World
6) Ajoutez ce projet dans le serveur Tomcat :
bouton droit sur le nom du serveur>Add and Remove
Ajoutez le projet dans la colonne de droite (Configured)
Si le serveur n’est pas démarré, démarrez le.
7) Dans le navigateur, tapez : http://localhost:8080/helloProject/HelloWorld
20
Servlet : cycle de vie
chargement du servlet - lorsqu'un servlet est demandé pour la première
fois, le conteneur crée l'objet (instance)
initialisation du servlet - une fois que le conteneur a intégré l'objet du
servlet, il lui invoque la méthode init qui sera invoquée qu'une seule et
unique fois durant toute la vie du servlet
sollicitation de la part d’un client - à chaque requête HTTP, le conteneur
détermine qu‘il est le servlet associé. A partir de là, un thread du servlet
démarre
finalisation du servlet - quand le conteneur de servlets décidera qu'il n'a
plus besoin de tel servlet, il invoquera la méthode destroy
– le servlet est détaché du conteneur et le garbage collector pourra supprimer
l'instance à tout moment
21
Servlet et Formulaires
Mécanisme pour appeler un servlet dans une page HTML
<FORM></FORM>
Dans le formulaire, chaque composant est défini au moyen d’une
balise particulière
SELECT, INPUT, TEXTAREA, …
Options de la balise <FORM>
– METHOD, pour indiquer le type de requête GET ou POST
– ACTION, pour connaître le nom de la ressource à appeler (le servlet)
Chaque composant (SELECT par exemple) a l'option NAME qui
permet d’identifier le composant (NAME="mon_composant")
En cliquant sur le bouton SUBMIT du formulaire, toutes les données
sont envoyées (via HttpServletRequest) au servlet indiqué dans la
balise FORM. Le servlet utilise ces données pour créer la réponse
et l’envoyer au client via l’objet réponse (HttpServletResponse)
22
Servlet : Hello World (suite)
Dans l’application « helloProject » :
– Écrire une page html « index.html » qui appelle le
servlet « HelloWorld » avec la méthode GET
– Dans WebContent, créez le fichier HTML :
index.html
– Ajoutez un formulaire pour appeler le servlet
– Testez de nouveau :
http://localhost:8080/helloProject/index.html
23
Exercice 1
Définir une nouvelle application « biblio » qui
affiche un message de bienvenue avec le nom et
le prénom de l’utilisateur avec les méthodes get
et post à l’aide deux formulaires distincts
24