Java & le web
x Le web dynamique
x Java & le web

Intro à Tomcat
x Serveur d'applications
x Présentation Tomcat
x Installation
x Arborescence

Configuration
x Introduction
x Server
x Service
x Engine
x Host
x Context
x DefaultContext
x Logger
x Loader
x Realm
x Valve

Connecteurs
x Balise Connector
x Coyote HTTP/1.1

Sécurisation accès
x La balise Realm
x Memory Based
x JDBC Database
x Protéger ressources
x Cryptage password

Les Valve
x La balise Valve
x Access Log
x Single Sign-On

Fonctionnalités
x Déploiement auto.
x Class loaders

Eclipse & Tomcat
x Plug-in pour Eclipse
x Projet Tomcat
x Debugger des JSP

Créer une appli web
x Présentation
x Architecture
x Fichier web.xml
x Déploiement

Tomcat 5
x Nouveautés

Tomcat's Corner
x Crédits
x Liens
 
             
Le web dynamique

 

Internet : un client et un serveur

Pour naviguer sur Internet, on utilise un browser (Internet Explorer, Mozilla...). Ce logiciel est en fait un client HTTP. Le principe même de l'Internet est d'aller chercher l'information désirée sur un serveur. Un serveur est un ordinateur dont le rôle est de mettre à disposition des clients certaines ressources (données), comme des images ou de textes. Notons qu'en réalité, un serveur est un logiciel ayant ce rôle. Mais on utilise souvent le même mot pour l'ordinateur sur lequel est installé le logiciel. Car il est courant qu'une machine soit dédiée au rôle de serveur.

Le client, quant à lui, est un logiciel capable de se connecter au serveur, de lui demander des données, et des les récupérer. Un navigateur Internet est donc un client HTTP. Il faut savoir qu'HTTP est le protocole (les codes de communication) utilisé pour échanger des informations sur le web. Le principe du navigateur web est donc d'effectuer une requête sur un serveur web, et d'en afficher la réponse.

Ainsi, lorsque vous tapez l'adresse "http://www.google.fr/index.html" dans votre navigateur, celui-ci effectue en fait une requête auprès du serveur répondant à l'adresse "www.google.fr" pour lui demander la ressource (ici, la page HTML) "index.html". Notons au passage que l'adresse commence par "http", qui est bien le protocole employé. Le serveur envoie la ressource. Il s'agit ici d'une page web écrite en HTML. Le HTML est un langage permettant de créer des pages mélangeant principalement textes et images. Il permet en outre de spécifier des informations de mise en forme. Lorsque le navigateur reçoit le fichier, il en interprète le contenu pour le traduire visuellement à l'écran.

Il existe bien sûr beaucoup d'autres usages de l'Internet que consulter des pages HTML. Mais, lorsque vous naviguez sur le web, vous consultez de telles pages. Nous ne nous intéressons pas ici aux autres aspects de l'Internet (FTP, peer-to-peer, ...).

 

Au commencement étaient les pages statiques

Les premières ressources auxquelles on a pu accéder grâce à l'Internet étaient ainsi des ressources statiques. Dans quel sens emploie-t-on ce terme ? Il s'agit en fait de ressources transférées du serveur au client sans aucune modification. Le navigateur reçoit la copie strictement identique du fichier demandé, situé sur le disque dur du serveur (ou sur n'importe quel autre serveur...). Si vous avez placé sur le serveur un fichier HTML nommé "test.html", dont le contenu est le suivant :

<html>
<head>
<title>TEST</title>
</head>

<body>Bonjour, ceci est un test</body>
</html>

 

Lorsque vous appelerez l'adresse "http://monserveur.com/test.html", le serveur enverra à votre navigateur les quelques lignes ci-dessus exactement. Celui-ci affichera le résultat ainsi :

Et, si vous affichez la source de la page, vous découvrirez le contenu exact du fichier ci-dessus.

 

Les pages web dynamiques

Les pages web statiques sont bien sûr toujours utilisées aujourd'hui. Mais elles ont vite montré leurs limites. Imaginons en effet que nous souhaitions personnaliser une page, en fonction du visiteur. Dans notre exemple précédent, au lieu d'afficher simplement "Bonjour", on pourrait vouloir écrire "Bonjour untel", en fonction du prénom de la personne. Le langage HTML seul est incapable de réaliser ce genre d'opération. Il n'est qu'un langage de mise en forme, qui ne peut en aucun cas influer sur le contenu.

Or, un navigateur web ne sait comprendre que le HTML pour décrire une page web. Si, par exemple, on lui demande d'afficher un fichier contenant du code source Java, il l'affichera comme du texte. On comprend dès lors que, quoi qu'il en soit, les données arrivant au client doivent être formées, en HTML. Ainsi, pour écrire dans notre page "Bonjour Toto", ou "Bonjour Casimir" selon les cas, il faut l'avoir fait avant que le client ne reçoive les données. Si on n'agit pas sur le client, il ne reste qu'un seul acteur dans la transaction HTTP : le serveur. C'est donc à son niveau qu'il faut agir.

L'idée est donc de générer dynamiquement le contenu (ou une partie du contenu) d'une page web. Dans notre cas, on pourrait laisser "statique" notre code, en ajoutant simplement "quelque chose" capable d'insérer le prénom du visiteur après le mot "Bonjour". Ce "quelque chose" est bien sûr un "programme" informatique (un ensemble d'instructions).

Il existe un grand nombre de programmes permettant de générer des pages web dynamiquement. Le premier (chronologiquement) s'appellait CGI (Common Gateway Interface). Plus actuel, on connaît aujourd'hui par exemple le PHP, très en vogue. Il s'agit d'un langage de programmation, que l'on peut mélanger à l'HTML dans une page web. Mais attention, la page ne sera plus compréhensible en l'état par le navigateur, qui, s'il recevait une telle page, afficherait le code PHP comme du texte simple. Il est donc nécessaire d'ajouter sur le serveur un programme capable d'interpréter un fichier contenant du PHP, et de générer le HTML correspondant.

Considérons le fichier "test.php", version modifiée de notre exemple précédent.

<html>
<head>
<title>TEST</title>
</head>

<body>Bonjour <%php echo($prenom); %>, ceci est un test</body>
</html>

Notez qu'il contient des balises étranges ("<%") qui n'ont rien à voir avec le HTML. Elles permettent de placer du code PHP. La petite portion de programme écrite ici affiche simplement le contenu d'une variable $prenom. Pour que ce code fonctionne, il faut bien sûr avoir initialisé une telle variable avec le prénom du visiteur.

Lorsque vous appelez dans notre navigateur la page "http://monserveur.com/test.php", l'interpréteur PHP traite la page et produit le code HTML suivant (avec la variable $prenom initialisée avec la valeur "Pierre") :

<html>
<head>
<title>TEST</title>
</head>

<body>Bonjour Pierre, ceci est un test</body>
</html>

Il a donc remplacé le code PHP, qu'il sait comprendre, par le HTML correspondant. Ici, il s'agissait simplement d'écrire "Pierre". C'est ce contenu qui sera transmis au navigateur web, qui l'affichera à l'écran. En consultant la source de la page, vous trouverez celui-ci, et non pas le source contenant le PHP. Cela doit vous paraître maintenant tout naturel, puisque, sur le serveur, le code PHP a été remplacé. Rien ne permet donc aux utilisateurs de consulter le code source exact de la page.

 

Des opérations complexes

Nous avons bien sûr présenté ici le B.A.BA de la programmation web dynamique. Ces informations sont loin d'être exhaustives. Mais, maintenant que nous savons que l'on peut générer dynamiquement du HTML, et que l'on dispose de langages de programmation pour ce faire, les possibilités sont énormes. En effet, avant d'inscrire un résultat en HTML, des calculs peuvent être réalisés, ou des données récupérées dans des bases de données. Dans notre exemple précédent, on aurait ainsi pu récupérer le prénom du visiteur dans un cookie préalablement renseigné. Ou encore effectuer une authentification par login/password et récupérer l'identité correspondante dans une base de données. Tout cela, et beaucoup plus encore, est possible grâce à la programmation web dynamique.

 

Côté client... ?

Nous avons largement parlé de la programmation web dynamique côté serveur. C'est en effet la plus puissante, celle qui propose le plus de possibilités. Mais notons également qu'il existe des possibilités de "dynamiser" le code côté client. Notamment grâce au Javascript, un petit langage de script compris par les navigateurs Internet. Il est souvent utilisé pour effectuer de petits contrôles dans des formulaires (champs bien remplis, adresse e-mail bien formée...). Il se limite néanmoins aux possibilités offertes côté client... Ce n'est pas ce qui nous intéresse ici.

 

 

en résumé...

 

- Le web consiste pour un client (le navigateur) à récupérer des données sur un serveur.

- Les pages web sont écrites en HTML, langage de description mélangeant données et informations de mise en forme.

- Les pages web HTML sont statiques, leur contenu ne peut pas être modifié, hormis manuellement dans le code source.

- On peut générer du contenu HTML grâce à des langages de programmation dynamiques, et aux programmes qui savent les interpréter (ou les exécuter, nous verrons la différence par la suite).