Vous êtes sur la page 1sur 46

Cours 8 : développement

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 ».

• Différents types de serveurs :


– serveur d'applications,
– serveur web
– serveur de base de données,
– serveur de fichiers,
– serveur d'impressions
– ...
3
Serveur Web
• Programme situé sur une machine connectée au réseau
internet

• Dédié au protocole HTTP, il attend des requêtes client


(navigateur web)

• Traite les requêtes

• Retourne une page HTML en réponse

4
Application Web
Une application web est une extension dynamique d’un serveur web.

Une application web est formée d’un ensemble de composants web, de


ressources statiques (images, sons, …), de bibliothèques et de classes
utilitaires.

Les composants web fournissent cette capacité d’extension. les servlets et


pages jsp sont des exemples de composants 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, ….

La configuration d’une application web en vue de son déploiement est


maintenue dans un fichier XML, appelé descripteur de déploiement. 5
serveur de BD

serveur d'impression
requête HTTP
serveur Web apache

container Web tomcat


JSP servlet
composants web
autres ressources

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.

Ce service est souvent invoqué par une application orientée présentation

Ce sont typiquement des services métiers. On parle de transactions B-to-B

Exemple : une entreprise envoie une requête contenant la destination de


livraison d'une commande. Le service requis détermine la route à
suivre dont le coût est moindre.
La réponse n'est pas obligatoirement liée à l'invocation du service. Elle
pourra faire l'objet d'une réponse séparée.

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...).

Cette architecture est avant tout un élément de structuration logique. Rien


empêche aux 3 serveurs de s'exécuter sur une même machine
11
couche présentation couche métier couche d'accès
aux données

requête
HTTP

client web serveur web

requête sql

serveur de BD
client Java
logique métier

client Ada
12
Architecture 3-tiers
• avantages

- nette séparation entre les 3 couches favorisant un développement plus


rapide d'application Web par réutilisation de composants métiers pré-
définis
- échange de composants facilité
- protection des données et sécurité rendues plus faciles à obtenir
- changement d'implémentation de composants possible sans réécriture
de l'ensemble de l'application

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

Elle est composée de deux parties essentielles :


• une infrastructure de services (transaction, sécurité, ...) dans laquelle
s'exécute les composants écrits en java : un tel environnement se
nomme serveur d'application.
• un ensemble d'API (Application Programming Interface) : API Servlet,
API JavaServer Pages, API JDBC, ...
Concurrent de .NET

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.

Communément, les servlets étendent des applications hébergées par un serveur


Web. Elle reçoivent donc une requête HTTP, effectue un traitement qui
consiste à générer une page HTML et retourne cette page vers le navigateur de
l'utilisateur.
La technologie Java Servlet définit des classes spécifiques au mode HTTP.

Les servlets peuvent s'appliquer à d'autres types de requêtes et donc à n'importe


quel protocole de type requête/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

L'objectif premier est de séparer les parties présentation et génération de


contenu d'une application Web.

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

XML est un langage de balises (tags) :


il n'utilise pas de balises prédéfinis comme HTML

XML est extensible :


il permet de définir de nouvelles balises : c'est un métalangage.

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

• Conteneur de servlets - Moteur JSP

• 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

Conteneur (Moteur) de servlets


Ensemble des classes qui implantent les APIs Servlets
constituant ainsi un environnement d'exécution propre aux
servlets
Les moteurs de servlets sont souvent rattachés à des
serveurs web.
Exécutable avec tous les serveurs web (IIS, Apache, ..)

23
Fonctionnement du moteur de
servlet
• Normes Servlet, API standard, Java, JVM définies par SUN

• Plusieurs implémentations fournies par les acteurs du marché

• Pour fonctionner, il faut un serveur web, une machine virtuelle Java et


un moteur de servlet

• Chaque servlet s'exécute dans un thread de la machine virtuelle Java à


laquelle elle est associée. Les servlets peuvent donc communiquer
entre elles facilement (changement de contexte léger) car elles
fonctionnent dans le même espace d'adressage. Les données sont donc
accessibles en lecture et en écriture simplement.

24
3 types de moteurs de servlets
• Le serveur gère le contenu statique, le moteur de servlet le contenu dynamique

• moteurs intégrés (utilisés pour le développement)


- ils sont partie intégrante d'un serveur web développé en Java
- serveur web et servlets exécutés dans la même JVM
exemple : Tomcat
• moteurs embarqués
- serveur web multithreadé, la JVM s'exécute dans un thread séparé
- le serveur peut invoquer une servlet avec une bonne performance car
changement de contexte peu coûteux
• moteurs externes
- serveur web multi processus
- la JVM est externe et partagée par les processus
- accès lourd entre serveur et servlets
25
Traitement simultané des
requêtes(1/2)
Premier modèle
• Une seule instance de servlet => chaque requête client donne lieu à un
thread qui manipule cette instance.
C'est le comportement par défaut
Il faut donc isoler les parties critiques dans le code de la servlet afin de
synchroniser l'exécution des différentes requêtes
Occupation mémoire faible ( contrairement à CGI )

• 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);
}
}

les threads correspondant aux différentes requêtes partagent


la variable d'instance 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

t1 load compteur store compteur

t2 load compteur ... store compteur

t3 load compteur ... 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

• A chaque servlet correspond une réserve d'instances

• A chaque requête HTTP correspond une instance de servlet


et une seule

• La servlet n'a donc pas à gérer la synchronisation puisqu' aucune


concurrence n'est possible

• Exemple : en cas d'accès simultané à un SGBD


Chaque requête à une BD nécessite une connexion spécifique.
Ceci est réalisé car chaque instance possède sa propre connexion

• 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

requête HTTP serveur web


<html>
à une page JSP ...
<%....%> fichier jsp
...
<\html>

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

Tomcat peut être utilisé à la fois comme serveur HTTP et


comme conteneur d’exécution des servlets et des JSP

Il est compatible J2EE : l’ensemble des développements


réalisés pour Tomcat peuvent être portés sur des serveurs
d’applications commerciaux comme WebSphere,
WebLogic, Oracle Application Server.
33
Serveur d'applications Tomcat
(2/2)
• Téléchargement
– tomcat 5.5.x pour java 1.5
– http://jakarta.apache.org
• Lancer le serveur
– http://serveur:8080
– http://localhost:8080 (en local)
• Utilisateur
– est défini par le triplet (nom, password, rôle) géré par le fichier
tomcat-users.xml. Le fichier n'est lu qu'au démarrage
<user name="admin" password="secret" roles="standard,manager" />
• Accès au manager
– http://serveur:8080/manager/html

34
Le protocole HTTP
___________________________
• Requête HTTP

• Dialogue HTTP

• Méthodes du protocole 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.

HTTP est un protocole sans état

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

• Protocole se situant sur la couche application du modèle OSI


• Utilise le protocole TCP. Il garantit un transport fiable d'informations
• Toutes les commandes HTTP sont émises en mode texte (ASCII)
Il permet de :
- charger des documents textes (HTML) ou binaires (GIF, JPG, son, ...)
- envoyer des informations au serveur Web
- déposer des documents textes ou binaires sur le serveur Web
- charger/déposer n'importe quel type de fichier

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

donne lieu à la requête

GET /eleves/numero.html HTTP/1.0

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

envoi d'un message pour l'obtention


de la page

réponse : renvoi de la page ou erreur


intérprétation fin de la connexion TCP/IP
du contenu
de la page 41
Les méthodes du protocole HTTP
Les méthodes standards du protocole HTTP sont : GET, HEAD, POST,
PUT, DELETE, TRACE

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)

3 commandes supplémentaires avec la version 1.1 :


PUT pour placer directement des documents sur le serveur
DELETE pour supprimer un fichier du serveur (si autorisation !)
TRACE obtenir un diagnostic des requêtes reçues par le serveur

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

Des lignes de type clé : valeur complètent la requête


Exemple : Host: www2.cnam.fr

Les paramètres de la requête forme une chaîne de caractères ajoutée à l'URI.


Ces données figurent dans l'en-tête de la requête, c'est pourquoi leur taille est
limitée à 240 caractères

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

L'échange de ces informations est donc invisible

POST apporte une sécurité dans le cas d'envoi de données sensibles

En pratique, les deux commandes sont interchangeables, mais on n'utilisera pas


GET pour envoyer le numéro d'une carte de crédit ou mettre à jour une base de
données. De même, on utilisera POST lorsque le volume des données à
échanger est important.

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

Vous aimerez peut-être aussi