Vous êtes sur la page 1sur 33

Chap 2

Architecture Client-serveur
pour le Niveau applicatif

Pr Rachid ALAOUI
1-Présentation des applications web
Avant de démarrer dans les configurations et déploiements d’une application Web,
commençons par faire un point sur ce qu’est une application Web et quelle est la place de
ce type d’application dans les spécifications J2EE/JEE.

Une application Web est une application qui utilise HTTP (Hyper Text Transport Protocol)
comme couche de transport:
Architecture Web pour J2EE/JEE
C’est une collection de ressources :
servlets, pages HTML, classes et Framworks (JSF, Spring MVC…), autres pouvant être
packagées et pouvant s’exécuter sur des conteneurs provenant de fournisseurs multiples.

Les éléments d’une application Web sont :


- des servlets ;
- des pages JSP ;
- des ressources statiques : images, pages HTML, documents PDF... ;
- des applets ;
- des composants Java Bean ;
- des descripteurs de déploiement ;
- des classes utilitaires Java.
L’ensemble de toutes ces ressources sont packagées dans une archive de type jar, dont
l’extension est war.
Cette archive sera placée dans le répertoire de déploiement des conteneurs pour être
automatiquement déployée.
La structure d’une archive war est la suivante :
GET et POST : deux principales requêtes HTTP
Dans le cas de sites Web modernes et interactifs, les clients (c-à-d les navigateurs
Web)
récupèrent non seulement un document HTML sur le serveur, mais
lui envoient aussi souvent des informations comme :
- Le texte d’un terme de recherche que l’utilisateur a saisi dans le champ de
recherche
- Le contenu d’un formulaire rempli
- Le tri d’une liste
- ….

Pour la transmission de ces informations au serveur, le protocole HTTP prévoit


différentes méthodes de requête. Les deux plus importantes sont GET et POST.

5
3- Le protocole HTTP et Communication Client Serveur
Le client envoie la requête :
Méthode GET

6
3- Le protocole HTTP et Communication Client Serveur
Le client envoie la requête : Méthode POST

7
3- Le protocole HTTP et Communication Client Serveur
Le Serveur retourne la réponse :

Ligne de Status
Date du serveur
Nom du Serveur
Dernière modification
Type de contenu
Sa taille

Le fichier que le client va


afficher

8
3- Le protocole HTTP et Communication Client Serveur
Application de communication Client-Serveur
- Dans l’édition J2SE vous avez vu comment développer une application
autonome ou une applet avec les fonctionnalités standard de Java.

- L’édition élargie J2EE comporte des spécifications supplémentaires concernant


le développement de ce que l’on nomme des servlets(réunion de serv, début
du mot serveur et de let, par analogie avec applet).

Principe de communication Client-


Serveur : Lancer une application sur
une machine serveur depuis un poste
client par l’intermédiaire du web ou
d’un intranet.

9
3- Le protocole HTTP et Communication Client Serveur
Application de communication Client-Serveur
Solution 1:
Le client peut communiquer des informations à une servlet, grâce à la notion de
paramètre, ce qui nous amènera à parler des formulaires HTML.

Solution 2:
Le client peut communiquer au
serveur avec des pages JSP
(JavaServer Pages):
Pages HTML dans lesquelles on peut
introduire des séquences
d’instructions Java.

10
3- Le protocole HTTP et Communication Client Serveu
Application de communication Client-Serveur
Solution 1: Servlet

11
3- Le protocole HTTP et Communication Client Serveu
Application de communication Client-Serveur
Solution 1: Servlet
Une servlet va se présenter comme une classe dérivée
de la classe HttpServlet fournie dans le package
javax.servlet.

Notre servlet affiche le message


Bonjour dans une page HTML
ayant pour titre "Servlet
Bonjour". 12
3- Le protocole HTTP et Communication Client Serveur
Application de communication Client-Serveur
Solution 1: Servlet
Transmission d’informations (nommées alors paramètres) du client au serveur:
Le concepteur de la servlet peut choisir entre deux démarches : URL ou formulaire
HTML
• Demander au client d’incorporer ces paramètres directement dans l’URL fournie au navigateur ;
dans ce cas, leurs valeurs seront récupérées par la méthode doGet et déjà rencontrée,

• Récupérer ces informations auprès du client par le biais d’un "formulaire


HTML" et lancer la servlet depuis ce formulaire.

13
3- Le protocole HTTP et Communication Client Serveur
Solution 1: Servlet
La transmission d’informations peut être visible ou invisible dans l’URL
– La méthode "GET" : l’appel de la servlet depuis le formulaire fabrique
automatiquement l’URL voulue avec les paramètres qui seront visibles dans le
navigateur.

APPEL avec page html: <form action =


http://localhost:8084/ServletWeb2/Exo1 method="GET">
– La méthode "POST" : la transmission des paramètres est invisible dans le
navigateur.
la servlet devra faire appel à une méthode différente, à savoir doPost.

APPEL avec page html: <form action =


http://localhost:8084/ServletWeb2/Exo1
Application: Voir TP1 (EX 1) method=“POST"> 14
3- Le protocole HTTP et Communication Client Serveur
Solution 1: Servlet
Exemple:
Pour créer une servlet nommée BonjourVous récupérant un seul
paramètre: un prénom fourni par l’utilisateur et qui l’affiche à la
suite du texte bonjour dans une page HTML.
Appel de la servlet BonjourVous se présentera ainsi :
http://localisationServeur/localisationServlet/nomServlet?preno
m=hassan
?prenom=hassan : précise que l’on donne au paramètre nommé
prenom la valeur hassan
Remarque: Si on a plusieurs paramètres dans l’appel de la
servlet : séparés les uns des autres par des caractères &

15
3- Le protocole HTTP et Communication Client Serveur
Solution 1: Servlet
Utilisation d’un formulaire HTML
En définitive, voici ce que pourrait donner la page HTML créant un formulaire de
lancement
de la servlet BonjourVous:
<html>
<head>
<title> Servlet Bonjour Avec Formulaire </title>
</head>
<body>
<form action = http://localhost:8080/examples/servlet/BonjourVous
method="GET">
Vous vous appelez <input type="text" size=24 name="prenom" value =""> <br>
<br>
<input type="submit" value="OK">
</form>
</body>
</html>
16
3- Le protocole HTTP et Communication Client Serveur
Solution 2: Pages JSP
un JSP est une page HTML dans laquelle sont introduits des
morceaux de code Java nommés ‘’éléments de script’’
Exemple: une page JSP: fichier HTML contenant un scriptlet (code java)

Exemple: PageBonjour.jsp
Les JSP sont enregistrés avec
l’extension .jsp. <html>
<head>
Pour pouvoir exéctuer un JSP,
<title> JSP Bonjour </title>
une machine serveur doit </head>
disposer d’un interpréteur de <body>
JSP (ou "moteur de JSP").
<% out.println ("BONJOUR") ;
%>
</body>
</html>

Une requête pour l’appel de la page jsp:


http://localisationServeur/localisationJSP/nomJSP.jsp?ParamètresEventuels 17
Description d’une
JSP
Format des JSP

18
3- Le protocole HTTP et Communication Client Serveur
Solution 2: Pages JSP
Transmission de paramètres à un JSP
Voici un JSP nommé bonjourVous donnant le même résultat que notre servlet BonjourVous
JSP bonjourVous.jsp
<html> <head> <title> JSP Bonjour </title>
</head>
<body>
<%
String nom = request.getParameter
("prenom") ;
if (nom == null)
{
out.println ("BONJOUR") ;
}
else
{
out.println ("BONJOUR " + nom) ;
}
%>
19
</body> </html>
3- Le protocole HTTP et Communication Client Serveur
Solution 2: Pages JSP
Utiliser un formulaire HTML
Autre façon d’appel JSP :
Formulaire de lancement du JSP
bonjourVous
<html>
<head>
<title> Appel de JSP bonjourVous </title>
</head>
<body>
<form action = http://localhost:8080/examples/bonjourVous.jsp method=GET>
Vous vous appelez <input type="text" size=24 name="prenom" value ="">
<input type="submit" value="OK">
</form>
</body>
</html>

20
3- Le protocole HTTP et Communication Client Serveur
Solution 2: Pages JSP
Les différents éléments de script d’un JSP
Possibilités algorithmiques des scriptlets:
Un scriptlet peut contenir n’importe quel code Java
On obtient ‘5 fois’ BONJOUR dans la page transmise au client

Exemple:
<% for (int i=0 ; i<5 ; i++)
{ out.println ("BONJOUR") ;
}
%>

Mais on peut aussi procéder ainsi :


<% for (int i=0 ; i<5 ; i++)
{
%>
BONJOUR
<% }
%> 21
3- Le protocole HTTP et Communication Client Serveur
Solution 2: Pages JSP
Les différents éléments de script d’un JSP
- Les expressions ds JSP
On voit donc que l’instruction d’un scriptlet :
out.println ("BONJOUR" + nom) ;
peut être remplacée par la ligne HTML suivante :
BONJOUR <%= nom %>

Dans l’élément de script <%= expression %>, on peut placer n’importe quelle
expression valide en Java
Exemple:
BONJOUR <%= out.getParameter (prenom) %>

- Commentaires en JSP:
<%-- ceci est un commentaire --%>
- Déclaration de variables en JSP:
Exemple: <%! int compte=0 ; %> 22
3- Le protocole HTTP et Communication Client Serveur
Solution 2: Pages JSP
Utilisation de JavaBeans dans des JSP
Définition:
Un composant JavaBean est une simple classe Java qui respecte
certaines conventions sur le nommage, la construction et le
comportement des méthodes.
Code d’un JavaBean :
<jsp : useBean id=" nomInstanceJavaBean " class="nomClasseDuBean "
scope="request / session / application / page">
...
</jsp : useBean>

Objectif de l’utilisation des JavaBeans : écrire le moins de code possible dans


une JSP Sous-traitement du code Java par un JavaBean

Utilisation :
Accès à l’aide de l’identifiant nomInstanceJavaBean
Balise sans corps <jsp:useBean ... /> 23
24
Exemple de JSP/JavaBean

25
Exemple de JSP/JavaBean

26
JSP et JavaBeans
Utilisation

27
Bibliothèques de tags
But
- Prise en charge de fonctionnalités sans écrire de code Java
- Liaison à des classes Java, mappage des tags à l’exécution
Solution: La JavaServer Pages Standard Tag Library (JSTL) ajoute une
bibliothèque de balises à la spécification JSP pour l’exécution
conditionnelle, Boucles, internationalisation…
Exemples (Java Standard Tag Library { JSTL) :

28
Le patron de conception Modèle-Vue-Controleur avec JEE
- Séparer le code chargé de créer le contenu
de celui chargé de le présenter.

- Séparer les tâches de développement :


une équipe JSP,
une équipe Servlet,
une équipe SGBD.

29
Frameworks Web
- Mettre en œuvre une "bonne" architecture MVC reste un tâche
complexe surtout si plusieurs applications doivent profiter de cette
architecture
Nombreux frameworks pour faciliter le développement d'applications Web
Dans le monde Java EE :
- Struts (Apache)
- Java Server Faces (SUN)
- Spring MVC

Nombreux autres langages :


- Symfony (PHP)
- Django (Python)
- …

30
Framework (cadre d'application)
Ensemble de bibliothèques et de conventions permettant le développement
rapide d'applications.
Il fournit suffisamment de briques logicielles et impose suffisamment de rigueur
pour pouvoir produire une application aboutie et facile à maintenir.

Différence framework / bibliothèque (librairie)


Avec une librairie : exécution est dirigée par le code écrit par le développeur qui fait appel aux
classes de la librairie

Avec un framework : exécution est dirigée par le code du framework qui fait appel au code
écrit par le développeur le développeur doit compléter les classes et ressources préexistantes
dans le framework

31
2- Les descripteurs de déploiement
Il y a deux descripteurs de déploiement:
- Le descripteur de déploiement standard le fichier web.xml
- Le descripteur de déploiement spécifique, le fichier jboss-web.xml.

Le descripteur de déploiement standard est portable d’un serveur


d’application à l’autre,
le descripteur de déploiement spécifique est propre au serveur JBoss.

Le descripteur standard contient la configuration de l’application web, des


références aux ressources.

Le descripteur de déploiement spécifique contient la liaison entre les ressources


référencées dans le fichier web.xml et leur déploiement dans le serveur
d’application.

Les descripteurs de déploiement sont situés dans le répertoire WEB-INF de


l’application Web.
Descripteur de déploiement standard web.xml
L’élément racine <web-app> du fichier web.xml comprend les éléments fils basique :

- <context-param> qui contient la valeur des paramètres utilisables dans toute


l’application. Ces paramètres, définis dans le fichier web.xml, peuvent être utilisés dans les
servlets et les pages JSP. Les paramètres sont déclarés dans les balises <param-name> et
<param-value>.

- <servlet> et <servlet-mapping> qui permettent de déclarer les servlets et de les


associer avec des URL.

- <session-config> qui contient l’élément <session-timeout> permettant de définir le


temps maximal d’une session

- <security-constraint>, <security-role>, <login-config> permettent de mettre en


place des sections du site qui sont soumises à des autorisations d’accès.

- <resource-ref>, <ejb-ref> déclarent des références vers des ressources, ou des EJB,
qui sont déployées sur le serveur. Ces déclarations seront associées aux ressources
réelles dans le fichier de déploiement jboss-web.xml.
- …..

Vous aimerez peut-être aussi