Projet du cours de Systeme de la filière Informatique et Réseaux de 5ème année. Université de Marne la Vallée.
JSP (Java Server Page)
à l'avantage d'intéresser deux communautés différentes
de développeurs. Les développeurs de sites Internet qui
utilisent JSP cherchent à générer du contenu dynamique
de façon efficace et rapide. Les programmateurs Java implémentent
du code en arrière plan pour les applications qui traiteront
toutes les données. 1. PrésentationLes pages web JSP sont une
technologie développée par Sun basée sur Java qui
simplifie le processus de développement de sites web dynamiques.
L'utilisation du langage de programmation Java permet aux concepteurs
de pages qui utilisent JSP d'incorporer rapidement des éléments
dynamiques dans les pages web en intégrant du code Java et en
utilisant quelques balises (tags) simples. JSP est un langage script
côté serveur. Le code de la page est exécuté
par le serveur web. Les pages JSP sont des fichiers texte munis de l'extension
.jsp, qui remplacent les pages HTML traditionnelles. Les fichiers
JSP contiennent du code HTML et du code imbriqué en Java. Le mélange d'HTML et de code Java dans les pages JSP permet de séparer la présentation (en HTML) des aspects procéduraux contenus dans le code. On a ainsi une grande souplesse dans le développement de sites web. 2. Autres langages dynamiques2.1 CGILes premiers serveurs HTTP
ne comportaient pas de programmes pour générer des réponses
de façon dynamiques. Des interfaces étaient utilisées
pour appeler d'autres programmes capables de traduire les requêtes
en un contenu exécutable. Le premier standard utilisé
a été CGI (Common Gateway Interface), c'est une
norme qui définit un mécanisme qui permet au serveur HTTP
de transmettre les informations d'une requête à des programmes
externes. 2.1 ASPL'équivalent de JSP
chez Microsoft est ASP (Avtive Server Pages), il est exécuté
du côté serveur et supporte divers langages scripts tels
que PerlScript, Jscript et VBScript. Le langage par défaut qui
est utilisé et VBScript qui est un sous ensemble de Visual Basic
(langage de programmation très utilisé par Microsoft).
VBScript permet d'accéder aux composants ActiveX. Ces composants
sont des codes objets compilés pouvant, dans la pratique, encapsuler
toutes sortes de fonctionnalités telles que l'accès à
une base de donnée ou à la manipulation de fichiers
2.1 PHPUn des plus important concurrent
de JSP est PHP (Personal Home Page) créé en 1994.
Exécution des scripts
PHP par le serveur: 3. Fonctionnement de JSPJSP présente de nombreux avantages par rapport aux autres langages de génération de contenu. Comme il s'agit d'une technologie basée sur Java, JSP profite de tous ce qu'offre ce langage pour le développement et le déploiements d'applications. En effet Java est un langage orienté objet fortement typé, permettant l'encapsulation, le traitement des exceptions et la gestion automatique de la mémoire. D'aute part, grâce
aux API normalisées pour les JSP et à la portabilité
du bytecode compilé Java, on n'est pas limité à
un seul type de plate-forme, de système d'exploitation. On peut
changer les composants d'une page JSP comme on le souhaite. JSP n'est pas rattaché à un éditeur particulier, les développeurs peuvent donc choisir les solutions de leurs choix. Lorsque la page est demandée par un utilisateur en HTTP, alors le serveur web HTTP va transmettre sa requête à un moteur de JSP qui va interpréter le page, compiler le code et générer la réponse. L'utilisateur ne verra aucune ligne de code Java dans les sources de la page qu'il aura reçu. Etapes d'une demande de page JSP: 4. Syntaxe
Il s'agit d'une page JSP qui génère dynamiquement un contenu en utilisant un couple de balises JSP qui supporte le script : <html> Ce code déclare une variable Java de type String appelée visitor et essaie ensuite de l'initialiser à partir de la requête HTTP courante. Si aucune valeur n'est présente pour cette variable dans la requête, une valeur par défaut lui est attribuée. Une expression JSP est ensuite utilisée pour insérer la valeur de cette variable dans la sortie HTML de la page.
Hello,
World ! pour une requête http://serveur.fr/helloScript.jsp Les paramètres de la requête sont transmis aux pages JSP en utilisant le mécanisme HTTP classique de passage de paramètres. Ici on utilise les requêtes HTTP GET, les valeurs de paramètres codé sont simplement ajoutées à la fin de l'URL. Le langage de script par défaut pour JSP est naturellement Java. Comme les pages JSP sont compilées en Servlets Java, la transformation des scripts en code Servlet est immédiate. JSP fournit quatre catégories de balises : 4.1. Les DirectivesIl s'agit d'un ensemble de balises qui fournissent au conteneur de JSP des instructions spécifiques à une page pour lui indiquer comment doit être traité le document contenant les directives. <%@
page attribut1="valeur1" attribut2="valeur2"
%> Les attributs pris en charge par la directive page ("<jsp:directive.page ...>") :
4.2. Les Eléments ScriptsIls sont utilisés pour intégrer les instructions de programmation, écrites dans le langage script désigné pour la page. Ces instructions doivent être exécutées chaque fois que la page est traitée pour une requête donnée. Les développeurs peuvent intégrer directement du code dans la page JSP et, plus précisément, un code générant les sorties qui doivent apparaître dans le résultat envoyé au navigateur.
Les déclarations sont utilisés pour définir des variables et des méthodes spécifiques à la page JSP. <%%!
String Chaine = "hello"; public
void exemple() {
Les déclarations sont
utilisées pour ajouter des variables et des méthodes à
une page JSP, mais elles ne peuvent pas contribuer directement aux sorties
de la page qui, en définitive, constituent l'objectif de la génération
de contenus dynamiques. <%=
expression %>
Pour les scripts multi-usages,
la construction JSP appropriée est la scriptlet. Les scriptlets
peuvent contenir des instructions d'un langage de script quelconque
qui, comme dans le cas des déclarations, sont uniquement évaluées
pour leur effet de bord. Cependant elles n'ajoutent pas automatiquement
des contenus aux sorties des pages JSP. <%
scriptlet %> 4.3. Les ActionsElles permettent de réaliser plusieurs comportements différents. Elles peuvent transférer le contrôle entre les pages, spécifier des applets et interagir avec des composants JavaBean côté serveur. Les actions encapsulent un comportement classique dans des balises simple à utiliser à partir de n'importe quelle page JSP. Elles constituent la base du mécanisme de conception de balises personnalisées, et certaines d'entre elles, dites standard, sont fournies par la spécification de base des JSP. 5. Exécution des JSP
Les éléments nécessaires pour utiliser JSP sont un serveur HTTP comme Apache (logiciel libre) ou Microsoft Information Serveur par exemple. En plus du serveur HTTP, un logiciel implémentant le conteneur (ou moteur) de JSP est nécessaire, Tomcat est le plus utiliser, il peut aussi faire office de serveur web. La version 4.0 de Netscape entreprise Server prend déjà en charge les servlets et les pages JSP. Bien sure, il faudra sur le serveur une Java Virtual Machine tel que JDK (Java Development Kit) qui contient une JVM, un compilateur...
Les JSP sont dérivées des servlets (les JSP sont transformées par le conteneur en Servlet), elle sont donc compilées en une classe Java dérivant de la classe HttpServlet (API Java javax.servlet et javax.servlet.http), et utilisant les méthodes doGet() et doPost pour recevoir les requêtes HTTP. Ainsi, lorsqu'un navigateur
fait appelle une page JSP, le serveur Web appelle le conteneur de JSP
qui transforme la page JSP en code source Java et compile la classe
afin de fournir un fichier compilé (d'extension .class).
Le script JSP est donc devenu une Servlet. Ce processus est en fait plus compliqué: le conteneur de JSP vérifie si la date du fichier .jsp correspond à celle du fichier .class. Le conteneur de JSP compile le script quand celui-ci a été modifié. Ainsi, le fait que la compilation ne se fasse que lors de la mise à jour du script JSP, fait de cette technologies une des plus rapides pour créer des pages dynamiques. On n'interprète pas à chaque fois la page JSP. De plus, une fois qu'une
page JSP a été demandée, elle reste en mémoire
pour que les autre demandes soient plus rapides. En effet, la plupart des
langages scripts de génération de pages dynamiques (ASP,
PHP, ...) reposent sur un code interprété,
ce qui requiert beaucoup de ressources pour générer la
réponse au format HTTP. Etant donné que les JSP sont compilées,
elles sont donc beaucoup plus rapides à l'exécution.
6. Mise en cache des sortiesLe protocole HTTP permet au serveur de renvoyer des informations supplémentaires au client sous forme d'en-têtes de réponse, qui sont transmis en même temps que le contenu web demandé. Ce dernier est alors appelé le corps (body) de la réponse. Ces en-têtes de réponse servent pour l'essentiel à préciser le statut de la requête au navigateur. Comme les en-têtes de requêtes, ils peuvent aussi contrôler la mise en cache et initialiser des valeurs de cookies. Cependant, l'inconvénient de ces en-têtes de réponses est que le navigateur s'attend à recevoir toutes les informations de l'en-tête avant de recevoir le corps du message. Par conséquent, si
une page JSP doit renvoyer des données d'en-tête au navigateur,
les en-têtes de réponses doivent avoir été
spécifiés avant que les sorties JSP soient générées
pour être renvoyées en tant que corps de la réponse. Pour prendre en compte cette
restriction au niveau du protocole HTTP, la spécification de
JSP exige que toute implémentation des JSP supporte la mise en
cache des résultats du traitement des pages JSP. Cela signifie
que le traitement de la page est enregistré dans une mémoire
tampon (par défaut 8Ko). Lorsque la page a été
entièrement traitée, la mémoire tampon est envoyé
au navigateur. 7. Gestion des sessionsUne des particularités du protocole HTTP est qu'il n'a pas d'état. Cela signifie que, d'une requête à une autre, les serveurs HTTP ne conservent aucune information sur les navigateurs qui se sont connectés. Après la réception d'une requête et le renvoi de la réponse, le serveur oublie tout ce qui concerne l'ordinateur sur lequel s'exécute le navigateur qui a émis cette requête. La prochaine fois qu'il recevra une requête de ce client, il la traitera comme si c'était la première fois qu'une requête provenait de cet hôte. Par exemple, dans site de commerce électronique, pour la gestion du " caddie " du client il est nécessaire de garder en mémoire ce que le client a commandé pour qu'il puisse finaliser son achat. Ce processus qui essai de
maintenir un état entre différentes requêtes HTTP
est appelé la "gestion des sessions". Il s'agit dans
une certaine période de temps que toutes les demandes de pages
d'un utilisateur fassent partie de la même session interactive. Les JSP fournissent un objet implicite nommé SESSION qui représente la session d'un utilisateur particulier qui interagit avec le serveur web. Chaque page JSP intervenant dans la gestion de session peut mémoriser des éléments dans cet objet SESSION et peut, plus tard, les extraire ou les supprimer. Cependant, pour les gros sites avec de nombreux utilisateurs connectés simultanément, l'enregistrement d'une grande quantité de données dans l'objet SESSION peut s'avérer problématique. Si, pour chaque session utilisateur, il faut mémoriser 5 Ko, alors la présence de 100 000 utilisateurs simultanés ayant des sessions actives va nécessiter 500 Mo de mémoire. Ainsi, la quantité de données mémorisées dans une session a un impact direct sur le nombre d'utilisateurs simultanés qui peuvent être traités. Pour réduire l'utilisation
de la mémoire de données de session, une autre approche
consiste à n'enregistrer que les références à
ces données (le numéro ID de l'utilisateur par exemple).
Les données réelles spécifiques à une session
sont alors enregistrées dans une base de données par exemple.
8. JSP ou PHP?Les deux langages JSP et PHP sont relativement différents. Si vous débuté en programmation dynamique et que vous ne voulez pas perdre trop de temps à apprendre un langage de programmation, il est alors préférable de s'orienter vers PHP. C'est un langage simple qui offre une infinité de possibilité dans la création de pages web dynamiques. PHP est plus adapté à la création de petits et moyens sites web qui ne sont pas trop complexes en terme de fonctionnalités. JSP est une technologie Java, il faut donc une bonne connaissance de ce langage bien que des développeurs web puissent utiliser des balises JSP prédéfinis. Ce langage est bien adapté au développement de sites marchands ou de gros Intranets qui demandent la mise en place d'une architecture 3-tiers. De plus, du fait de l'utilisation de la Virtual Machine Java, JSP demandera un serveur plus puissant avec plus de mémoire pour avoir des temps de réponses rapides. Le tableau ci-dessous présente
les points importants de chacun de ces langages:
9. LiensExposé de Système au format Powerpoint: PresentationJSP.ppt
|