Académique Documents
Professionnel Documents
Culture Documents
d'applications Web
• Typologie des applications Web
• Architecture 3-tiers
• Composants J2EE : servlets, JSP, XML
• Terminologie : serveurs Web,
d'applications, de servlets, ...
• Le protocole HTTP
1
Typologie des applications Web
___________________________
• Orientées présentation
– pages statiques
– pages dynamiques
• Orientées service
2
Serveur
• Serveur : ordinateur détenant des ressources particulières
et qu'il met à la disposition d'autres ordinateurs par
l'intermédiaire d'un réseau. On parle d' « architecture
client-serveur ».
4
Application Web
Une application web est une extension dynamique d’un serveur web.
Les composants web sont supportés par un container web ( tomcat ) qui
leur fournissent un ensemble de services tels que les services de
sécurité, de concurrence, de cycle de vie, ….
serveur d'impression
requête HTTP
serveur Web apache
services
sécurité, concurrence
...
6
Applications Web orientées
présentation (1/2)
• Il s'agit d'applications qui génèrent des pages
contenant différents types de langage: html,
sgml, xml, ... en réponse à des requêtes.
• Les pages générées peuvent être statiques
(pages html)
• Les pages générées peuvent être dynamiques :
pages contenant du code exécuté sur le serveur
7
Applications Web orientées
présentation (2/2)
URL pointant sur une page contenant des scripts PHP (ASP, JSP) ayant
pour rôle de construire "à la volée" des pages HTML.
Exemple : la page pointée fait appel à un interpréteur PHP qui convertit son
contenu.
requête HTTP serveur web
<?
à une page PHP ...
?>
moteur
PHP
page HTML
code HTML
8
Applications Web orientées
service
Une application Web orientée service implémente un point d’accès à un
service via le Web.
9
Architecture d'une application
Web
___________________________
• Architecture 3-tiers
10
Architecture 3-tiers
Architecture à 3-tiers ou Architecture à 3 niveaux
couche présentation : partie de l'application responsable de la présentation des
données, et de l'interaction avec l'utilisateur.
(application HTML exploitée par un navigateur Web ou WML pour être
utilisée par un téléphone portable par exemple).
couche métier : reçoit les requêtes utilisateur. Le serveur d'application fournit les
traitements métiers. C'est là qu'est implémentée la logique du système et ses
règles de gestion. Ce niveau protège les données d'un accès direct par les
clients
couche d'accès aux données : est responsable de la gestion des données. Cette
couche permet de rendre l'accès aux données transparente (uniforme) quelle
que soit la méthode utilisée pour les stocker (fichier, base de données...).
requête
HTTP
requête sql
serveur de BD
client Java
logique métier
client Ada
12
Architecture 3-tiers
• avantages
13
Composants J2EE
___________________________
• J2EE
• servlets
• JSP
• XML
14
J2EE
J2EE est une plate-forme fortement orientée serveur pour le
développement et l'exécution d'applications distribuées et donc en
particulier d'applications Web.
L'infrastructure J2EE permet de séparer les applications de
l'environnement dans lequel elles s'exécutent
15
Composants J2EE : servlets
Une servlet est une classe Java dont le rôle est d'étendre les fonctionnalités d'un
serveur qui gère des applications accessibles en mode question-réponse. Elle
reçoit une question, effectue un traitement et renvoie une réponse.
C'est une technologie utilisée par des sites à fort trafic comme ESPN.com ou
AltaVista.com
16
Composants J2EE : JSP
Java Sever Pages est une technologie Java construite au-dessus des
servlets
JSP est un langage de script. Un script JSP est composé d'instructions Java
placées entre balises et intégré au code d'une page HTML. Son rôle est
de générer du code HTML.
JSP n'est pas limité à la génération de texte HTML. Le code JSP permet
aussi bien la génération de code XML ou XHTML
17
Composants J2EE : XML
XML (eXtensible Markup Language) est un langage :
pour l'échange, le stockage et l'affichage de données sur l'Internet
Tout document XML est validé grâce à un autre document (DTD ou XML
Schéma) qui contient la grammaire définissant le document XML
18
Solution Microsoft
Microsoft propose la plate-forme .NET équivalente à J2EE
1.4
.NET est une plate-forme pour les développement
d'applications distribuées fondée sur :
– le langage C# (très proche syntaxiquement de Java)
– une machine virtuelle
19
Terminologie
___________________________
• Serveur Web
• Serveur d'application
• Tomcat
20
Serveur Web/Serveur
d'applications
Serveur Web
serveurs HTTP
Serveur d'applications
Fournit une infrastructure de services pour les applications
hébergées sur un système (transactions, sécurité, accès aux
objets métier, pool de ressources,..)
Les serveurs d’applications Web sont en général intégrés
aux serveurs Web.
S'exécute sous la forme d'un thread, dans le même
processus que le serveur HTTP
21
Les serveurs d'applications du
marché
• Serveurs d'applications utilisant des moteurs de servlets
IBM WebSphere
BEA WebLogic
Oracle Application
Oracle
Server
Iplanet Application
Iplanet
Server
22
Conteneur de servlets
23
Fonctionnement du moteur de
servlet
• Normes Servlet, API standard, Java, JVM définies par SUN
24
3 types de moteurs de servlets
• Le serveur gère le contenu statique, le moteur de servlet le contenu dynamique
• Intérêt
– les requêtes peuvent partager des données ( les variables d'instance de la
servlet)
– la servlet persiste sous forme d'instance ( elle peut conserver des données,
une connexion à une BD par exemple, qui seront utilisées lors d'une
prochaine requête)
26
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MauvaisThread extends HttpServlet {
private int compteur = 0; //variable d'instance partagée
public void doGet
(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
PrintWriter out = res.getWriter();
compteur=compteur+1;
out.println("nb d'accès à la servlet "+compteur);
}
}
27
Explication
requêtes
thread client 1 (t1) instance de servlet
thread client 2 (t2) compteur=compteur+1
thread client 3 (t3)
load compteur
load 1
bytecode add
store compteur
compteur 0 1 2 28 1
Solution
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MauvaisThread extends HttpServlet {
private int compteur = 0;
public void doGet
(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
PrintWriter out = res.getWriter();
synchronized(this){ section critique
int tmpCompteur = ++compteur; }
out.println("nb d'accès à la servlet "+tmpCompteur);
}
}
29
Traitement simultané des
requêtes(2/2)
Second modèle
• Ce n'est pas le comportement par défaut. Il faut pour cela que la servlet
implémente l'interface SingleThreadModel 30
Moteurs de servlets du marché
Apache Tomcat
Apache JServ
Caucho Resin
Alliaire JRun
31
Moteur JSP
Ensemble des classes qui implantent les APIs JSP constituant
ainsi un environnement d'exécution propre aux JSP
Le moteur JSP traduit le code JSP en une servlet
compilateur Java
page HTML
servlet
32
Serveur d'applications Tomcat
Tomcat est la référence d’implémentation des spécifications
Java Servlet et JavaServer Pages développées par SUN
34
Le protocole HTTP
___________________________
• Requête HTTP
• Dialogue HTTP
• GET
• POST 35
Le protocole HTTP
Définit l'ensemble des règles qui régissent le dialogue entre un client
(navigateur Web) et le serveur Web.
– Le client envoie une requête HTTP référençant un document statique
(HTML) ou dynamique,
– le serveur répond
– et la transaction est terminée.
Une commande HTTP appelle une méthode. Les plus courantes sont GET
et POST
– GET pour obtenir des informations (document, graphique, résultat d'une
requête sur une BD)
– POST pour poster des informations (numéro de carte de crédit,
informations à stocker dans une base,...)
36
Caractéristiques HTTP
Version actuelle : HTTP/1.1
37
Requête HTTP (1/2)
Une requête HTTP est une suite de lignes envoyées au serveur par le
navigateur. Elle comprend:
• Une ligne de requête: comprend trois éléments séparés par un espace:
– La méthode (GET, POST, ...)
– L'URL
– La version du protocole utilisé par le client (généralement HTTP/1.0)
• Les champs d'en-tête de la requête: suite de lignes facultatives qui
donnent des informations supplémentaires sur la requête et/ou le client
(navigateur, système d'exploitation, ...).
Ces lignes sont de type clé : valeur
• Le corps de la requête: suite de lignes optionnelles séparées des
lignes précédentes par une ligne vide et permettant par exemple l'envoi
des données d'un formulaire au serveur par une commande POST.
38
En-têtes client
Informations transmises par le client dans l'en-tête de sa requête :
From, Host, User-Agent informations sur le client
Referer URI de la page qui lance la requête
Authorization login et mot de passe
Accept préférences pour le document demandé
If conditions sur le document demandé
User-Agent identification du navigateur
Exemple
Host: www.cnam.fr
User-Agent: Mozilla/5.0
Accept : text/*, image/gif, image/jpeg,audio.wav
39
Requête HTTP (2/2)
Exemple : la demande de la page
http://www2.cnam.fr/eleves/numero.html
au serveur www2.cnam.fr
40
Dialogue HTTP
Le client demande la page :
http://www2.cnam.fr/eleves/numero.html
serveur
navigateur www2.cnam.fr
établissement d'une connexion TCP/IP
HEAD est utilisée par un client pour une demande de l'en-tête (HTTP) d'un
document (permet par exemple de savoir si un document a changé
If-Modified-Since)
42
GET: exemple
A la requête client :
http://www2.cnam.fr/exec1/numero_v5.com?code=I30879
correspond la requête GET qui associe des paramètres à l'URI (Unified
Resource Identifier)
GET /exec1/numero_v5.com?code=I30879 HTTP/1.1
Une méthode GET peut appeler des pages de différents types : page HTML,
XHTML, XML, servlet, page JSP, page PHP, ...
43
44
POST
Une requête POST passe toutes ses données dans le corps de la requête HTTP.
Leur taille est donc illimitée.
L'URL ne peut donc pas être suivie d'une chaîne d'interrogation où figurent par
exemple les valeurs saisies à partir d'un formulaire
45
En-tête HTTP de la réponse
Informations transmises par le serveur sur le document
taille du document Content-Length
date de dernière modif Last-Modified
nom du logiciel serveur Server
date d'expiration du document Expire
type MIME du document Content-Type
...
Exemple :
Date: Sunday, 31-January-07 11:34:45 GMT
Server: Tomcat Web Server/5.5
MIME-version: 1.1
Content-type: text/html
Content-length: 3044
Last-modified:Monday, 12-October-06 15:12:45 GMT
46