Title: Universit
 1Université De Limoges
Université De Boumerdes
Département de physique/Infotronique IT/M2
Technologies Web
Réalisé par  Mr RIAHLA Doctorant a luniversité 
de limoge (France)
2009/2010 
 2 Plan
- Bref présentation dInternet et du www 
- Histoire dInternet 
- Le W3C 
- Architecture et logiciels pour le web 
- Clients web 
- Serveurs web 
- Proxy Cache 
- CDN 
- HTTP 
- Technologies côté clients 
- HTML 
- CSS 
- JavaScript 
- Applets
3 Plan
- Technologies côté serveur 
- Cookies 
- CGI 
- PHP 
- ASP/ASP.NET 
- Servlets et JSP 
- Moteurs de recherche et Web Services
4Brève présentation dInternet et du www 
 5Histoire dInternet
- 1962 étude pour la création dun réseau pour 
 commander linfrastructure nucléaire américaine
 capable de résister a une attaque nucléaire
- Choix dun réseau par commutation de paquets 
- 1969 construction du premier réseau physique (4 
 machines, 50 kbps)
- 1972 envoie du premier email (23 machines, 
 50kpbs)
- 1973 création de TCP/IP 
- 1974 première utilisation du terme Internet 
- 1979 création dUsenet 
- 1982 TCP/IP devient le standard dInternet 
- 1983 Création du Domain Name System
6Histoire dInternet
- 1986 création de lIETF 
- 1990 création dun système hypertext par Tim 
 Berners-Lee
- 1992 le CERN présente le World Wide Web 
- 1993 création de Mosaic, premier client pour le 
 web
- 1994 création du w3c 
- 1995 IE 1.0 
- 1997 IE 4.0 sort, Netscape a 72, IE 18 
- 1998 Netscape jette léponge et se fait racheter 
 par AOL
- 1998 Netscape rend le code source de son 
 navigateur disponible sous licence open source
- 2002 Mozilla 1.0 
- 2004 début de la deuxième guerre des browsers
7W3C
- World Wide Web Consortium 
- Crée en 1994 
- 3 buts 
- Accès universel au web à travers des technologies 
 tenant compte des différentes cultures, langues,
 handicapes
- Web sémantique 
- Web of trust guider le développement du web en 
 tenant compte des aspects légaux, commerciaux et
 sociaux liés aux nouvelles technologies.
- Rôle du w3c 
- Interopérabilité les spécifications des 
 protocoles et langages du web doivent pouvoir
 fonctionner ensembles.
- Évolution sassurer que de nouvelles 
 technologies peuvent être ajoutées au web.
- Standardisation donner des Recommandations 
 décrivant les technologies du web.
8W3C  Domaines dactivité
- Architecture 
- XML, Web Services, Internationalization, URI 
 (Uniform Resource Identifier), DOM
- Interaction 
- Compound Documents, Device independence, 
 Graphics, HTML, CSS, MathML, Synchronized
 Multimedia, Voice Browser, XForms
- Technologie et société 
- Semantic Web, Platform for Privacy Preference, 
 XML signature, XML encryption, XML key
 management, Patent Policy and Standards
- WAI Web Accessibility Initiative 
- Politique et techniques pour laccés à 
 linformation des personnes handicapées
9Architecture et logiciels pour le web
Client
Server Dapplication
Serveur de base de données
2008/2009
Réalisé par  Mr RIAHLA 
 10Fonctionnement du web
Client 
Serveur Web
Client 
Proxy Cache
Client 
 11Les clients web
- Variété des plateformes 
- Windows, Unix, PDA 
- Variété des logiciels 
- IE, Firefox, Mozilla, Opera, Lynx 
- Caractéristiques 
- Gestion dHTML/XHTML 
- Gestion de CSS 
- Gestion de JavaScript 
- Gestion de plugins
12Répartition des clients web
Décembre 2004 Octobre 2005
IE6 65.5 68.9
IE5 9.9 5.6
Mozilla et Firefox 17 21.3
Opéra 7/8 1.8 1.3
Netscape 1.6 1.6
- Source http//www.w3schools.com/browsers/browsers
 _stats.asp
13Étapes pour la visualisation dune page web
- Lutilisateur entre une URL 
- Le client web effectue une résolution DNS pour 
 avoir ladresse du serveur
- Il effectue la requête http et reçoit un document 
 
- Il analyse le document pour 
- Préparer laffichage 
- Trouver les liens vers les images 
- Une requête est effectuée pour downloader les 
 images
- Cela peut se faire en parallèle ou 
 séquentiellement
14Serveurs Web
- Programmes répondant aux requêtes des clients web 
- Souvent appelé serveur http ou httpd 
- Écoute sur le port 80 (convention) dune machine 
- 2 types de ressources 
- Statiques ne nécessitent pas de traitement côté 
 serveur
- Dynamiques chaque demande de page nécessite des 
 opérations spécifiques du serveur
- Nombreux logiciels disponibles 
- Apache 
- Internet Information Service 
- Sun Java System Web Server 
15Parts de marcher des serveurs(74 572 794 sites)
- Apache 70.98 
- Microsoft IIS  20.24
Source http//www.netcraft.com/ 
 16Le serveur Apache
- Serveur HTTP/1.1 
- Versions pour Windows, OS/2, Linux 
- Utilise du pré-fork 
- Configuration du serveur en plaçant des 
 directives dans un fichier texte.
- httpd.conf (lu au démarrage) 
- .htaccess (accès au répertoire) 
- Syntaxe Directive Valeur 
- Les directives sappliquent à lensemble du 
 serveur
- Leur portée peut-être limitée avec des sections 
- ltDirectorygt, ltDirectoryMatchgt, ltFilesgt, 
 ltFilesMatchgt, ltLocationgt, ltLocationMatchgt,
 ltVirtualHostgt
17Apache  Restriction daccés
- Directives Allow,Deny 
- from all 
- from www.xxx.yyy.zzz 
- from unice.fr 
- Peut spécifier un ordre pour les directives 
 daccés
- order deny, allow  les deny sont évalués avant 
 les allow
- order allow, deny  les allow sont évalués avant 
 les deny
- Exemple 
-  order deny,allow 
-  deny from all 
-  allow from .ncsa.uiuc.edu 
18Apache  Virtual Host
- Permet davoir plusieurs serveurs sur une même 
 machine
- Virtual Host basé sur IP 
- Utilise lIP de la connexion pour déterminer le 
 bon serveur
- Virtual Host basé sur le nom 
- Utilise le nom de domaine fourni par le client 
 pour déterminer
- le serveur 
- Exemple 
-  NameVirtualHost  
-  ltVirtualHost gt 
-  ServerName www.domain.tld 
-  DocumentRoot /www/domain 
-  lt/VirtualHostgt 
-  ltVirtualHost gt 
-  ServerName www.otherdomain.tld 
-  DocumentRoot /www/otherdomain 
-  lt/VirtualHostgt 
- http//httpd.apache.org/docs/vhosts/name-based.htm
 l
19Le proxy cache
- Pourquoi demander plusieurs fois la même chose à 
 un serveur?
- Certains clients web ont un cache personnel à 
 lutilisateur. Le proxy travaille au niveau dun
 domaine (ensemble de clients).
- Les clients demandent au proxy, le proxy demande 
 au serveur
- Améliore la réactivité 
- Diminue la charge dun serveur 
- Diminue lutilisation de la bande passante 
- Rôle du proxy cache 
- Maintenir un cache des objets récemment demandés 
- Recharger ceux qui ont expiré quand ils sont 
 demandés
- Possibilité de forcer le chargement dune 
 nouvelle copie si Pragma no-cache
20Le proxy cache
- Fonctionnalités avancées 
- Interdire laccès au web a certaines 
 heures/personnes
- Limiter laccès à certains sites 
- Changer le contenu (supprimer les images, ajouter 
 des informations)
- Quest-ce qui est mis en cache? 
- Tout HTML 
- Certains résultats de scripts CGI (si Expires 
 header présent)
- Pas ce qui nécessite une authentification 
- Au final, cela dépend de la configuration, du 
 logiciel et de http
21Routage de contenu
- Donner au client le contenu disponible à 
 lendroit le plus approprié
- Plusieurs métriques 
- Proximité au sens réseau 
- Proximité géographique 
- Temps de réponse 
- Type dutilisateur (payant) 
22HTTP(Vue dans le cours précédent) 
 23Types MIME
- Multipurpose Internet Mail Extension 
- Originellement pour le mail, maintenant utilisé 
 par http
- Permet dindiquer ce que des données (des paquets 
 de 8 bits)
- représentent afin de faciliter leur utilisation 
- 2 informations sont nécessaires 
- Content-Transfer-Encoding type dencodage 
 utilisé
- Content-Type champs type/soustype 
- Types MIME communs 
- image/jpeg 
- text/plain 
- video/mpeg 
24Architecture Client-Serveur pour le Web 
 25Client
Serveur
CGI
Serveur BD
HTML XHTML CSS
ASP
PHP
Applets Java
JSP
ActiveX
Servlet Java
JDBC/ ODBC 
 26Technologies coté client 
 27HTML 
- HyperText Markup Language 
- Langage utilisé pour les documents portables 
- Dérivé de SGML qui était plus complexe 
- Mélange structure et présentation 
- Utilise des balises 
-  ltbalisegt  lt/balisegt 
- Actuellement disponible dans la version 4.0 
- Amélioration de laccessibilité 
- Meilleur séparation de la structure et de la 
 présentation
- Support des frames 
- Tables avancées 
- Successeur XHTML
28lt!DOCTYPE HTML PUBLIC  " -//W3C/DTD HTML 4.01 
Transitional//EN"  "http//www/w3.org/TR/html4/st
rict.dtd" gt ltHTMLgt ltHEADgt ltTITLEgt 
Document HTML lt/TITLEgt lt/HEADgt ltBODYgt 
 ltPgt Test lt/BODYgt lt/HTMLgt 
 29HTML 
- Un document HTML commence par un entête 
-  lt!DOCTYPE HTML PUBLIC  " -//W3C/DTD HTML 4.01 
 Transitional//EN"  "http//www/w3.org/TR/html4/str
 ict.dtd"  gt
- Il indique quelle version dHTML est utilisée 
 (ici 4.01 transitional).
- Il est possible de préciser des sous-versions 
- HTML 4.01 strict 
- HTML 4.01 transitional 
- HTML 4.01 framset 
- Le reste du document se trouve encadré par les 
 balises ltHTMLgt lt/HTMLgt
30HTML (HEAD) 
- Les balises ltHEADgt lt/HEADgt permettent de mettre 
 des informations qui ne sont pas du contenu
- Titre (title) 
- Mots Clefs 
- Autres informations 
- Les informations ne sont donc souvent pas 
 affichées à lécran
- Un document doit avoir un ltTITLEgt dans la section 
 ltHEADgt
- Des Meta-Data sont optionnelles 
-  ltMETA name"Auteur" content"Fabrice Huet"gt 
- Certaines Meta-Data servent aux moteurs de 
 recherche
-  ltMETA name"keywords" lang"fr" 
 content"Argent Rapide "gt
31HTML (BODY) 
- Le corps du document se trouve entre ltBODYgt 
 lt/BODYgt
- Autrefois possible de spécifier des informations 
 de rendu visuel
- background (image de fond) 
- text (couleur du texte) 
- link (couleur dun lien) 
- vlink (couleur dun lien visité) 
- alink (couleur dun lien sélectionné) 
- Maintenant deprecated, utiliser des feuilles de 
 style
32HTML (BODY) 
- Headings 
- Décrit brièvement le contenu ou le sujet dune 
 section
- Dans un browser, change la taille de la police 
- 6 niveaux, de H1 (plus important) à H6 (moins 
 important)
- ltH1gt Elephant lt/H1gt ltH6gt Souris lt/H6gt 
- Paragraphes 
- Permet dindiquer un paragraphe 
- ltPgt sans balise fermente 
- Retour à la ligne 
- ltbrgt
33HTML (BODY) 
- Listes 
- Doivent contenir au moins un élement 
- 3 possibilités libres, ordonnées, descriptives 
- On peut mélanger/imbriquer différentes listes 
- Listes libres 
- ltULgt 
-  ltLIgt Première information 
-  ltLIgt Deuxième information 
- lt/ULgt 
- Listes ordonnées 
- ltOLgt 
-  ltLIgt Première information 
-  ltLIgt Deuxième information 
- lt/OLgt
34HTML (BODY) 
- Listes descriptives 
- ltDLgt 
-  ltDTgt Première ltDDgt information 
- ltDTgt Deuxième ltDDgt information 
- lt/DLgt
35HTML (BODY) 
- Tables 
- Permet de ranger des informations en lignes et 
 colonnes
- Peut avoir une CAPTION (son nom) 
- Peut avoir un SUMMARY 
- Possibilité de grouper des lignes ou des colonnes 
- Le nombre de lignes et colonnes est déduit du 
 code HTML
- Lignes 
- Élément ltTRgt sans fermeture 
- Cellule 
- Élément ltTHgt pour lentête dune cellule 
- Élément ltTDgt pour le contenu
36HTML (BODY) 
- Liens et ancres 
- Permet de relier une ressources à une autre 
- Chaque lien a 2 ancres et une direction 
- Il part de lancre source et va à lancre 
 destination
- Création de lien 
- Balise ltAgt  lt/Agt 
- Attribut href pour indiquer une source 
- Attribut name pour indiquer une destination 
- Attribut title pour donner des informations 
 (tooltip, son)
- ltA href"http//www-sop.inria.fr/"gt INRIA Sophia 
 Antipolislt/Agt
- ltA name"ancre"gt Voici une ancre accessible avec 
 lt/Agt
- ltA href".ancre"gt On va a lancrelt/Agt 
37HTML (BODY) 
- On peut mettre href et name ensembles 
- Les ancres doivent être uniques dans un document! 
- Objets, Images, Applets 
- Avant, utilisation de ltIMGgt et ltAPPLETgt 
- Limités à lexistant (comment gérer les nouveaux 
 média)
- Applet était seulement pour les applets Java 
- Problème de laccessibilité 
- Tout est remplacé par ltOBJECTgt mais ltIMGgt est 
 toujours valide
38HTML (BODY) 
- Inclusion dimage par ltIMGgt 
- On indique la localisation de limage 
- Une description courte alt 
- Une description longue longdesc (optionnel) 
- ltIMG src"toto.png" alt"la photo de toto"gt 
- Inclusion dimage par ltOBJECTgt 
- ltOBJECT data"toto.png" type"img/png"gt 
-  la photo de toto 
- lt/OBJECTgt 
- Pour les applets, plus tard 
39HTML (FRAME) 
- Frames 
- Offre plusieurs vues de documents 
- Permet de maintenir des informations fixes et 
 dautres temporaires
- On remplace ltBODYgt par ltFRAMESETgt 
- On spécifie le nombre de lignes (rows) et de 
 colonnes (column)
-  ltFRAMESET rows"30, 70" cols"50, 50"gt 
-  .. 
-  lt/FRAMESETgt 
- Les frames peuvent être imbriquées 
- Elles peuvent être nommées pour devenir la cible 
 de liens
- Un contenu alternatif peut être donné avec 
 ltNOFRAMESgt
40HTML (FRAME) 
- Problèmes 
- Les frames définissent un rendu visuel, pas une 
 structure
- Les frames nont pas dURI 
- La vue dune page avec frames est déterminé par 
 une séquence de navigation et non plus une unique
 action
41HTML (FORMS) 
- Les forms permettent dajouter de linteractivité 
 
- Linteraction se fait à travers des objets 
 control
- buttons 
- checkboxes 
- radio buttons 
- menus 
- text input 
- file select 
- hidden controls 
- objects controls 
- Utilisation dune balise ltFORMgt  lt/FORMgt 
- 2 méthodes, POST et GET 
42HTML (FORMS) 
- ltFORM action"http//somesite.com/prog/adduser" 
 method"post"gt
-  ltPgt 
-  First name 
-  ltINPUT type"text" name"firstname"gtltBR
 gt
-  Last name 
-  ltINPUT type"text" name"lastname"gtltBR
 gt
-  email ltINPUT type"text" 
 name"email"gtltBRgt
-  ltINPUT type"radio" name"sex" 
 value"Male"gt MaleltBRgt
-  ltINPUT type"radio" name"sex" 
 value"Female"gt FemaleltBRgt  ltINPUT
 type"submit" value"Send"gt ltINPUT type"reset"gt
-  lt/Pgt 
- lt/FORMgt 
43HTML (FORMS) 
- 2 méthodes, POST et GET 
- La différence concerne la façon dont les données 
 sont encodées
- GET est utilisé dans le cas de demandes pures 
 (pas de modifications des données sur le
 serveur).
- POST est utilisé dans le cas de stockage/maj de 
 données
- Côté client avec GET les données sont encodées 
 sous forme dune URL. Avec POST elles sont
 encodées dans le corps de la méthode
- Côté serveur un traitement différent est 
 nécessaire suivant POST/GET
44CSS
- Cascading Style Sheets (http//www.w3.org/TR/CSS21
 /)
- Famille des styles 
- Décrit comment un document est présenté à lécran 
- Permet dajouter un style (font, couleur) à une 
 page web
- CSS1 et CSS2 dispo, CSS3 en préparation 
- Une feuille de style se place dans la balise 
 ltHEADgt
ltHEADgt ltlink rel"stylesheet" type"text/css" 
href"fichier.css"gt lt/HEADgt
ltHEADgt ltstyle type "text/css"gt . lt/stylegt lt/HEAD
gt 
 45CSS
- Une feuille de style est constituée de règles 
- Chacune a 3 parties 
- Le selector qui indique quelle partie du texte 
 est affecté par la règle
- La property qui spécifie laspect du rendu qui 
 est modifié
- La valeur qui indique la valeur de la property 
- Les règles sont appliquées de la plus spécifique 
 à la moins spécifique
46CSS
- Exemple appliquer un style a lélément body 
 (i.e. tout le document)
ltHEADgt ltstyle type "text/css"gt body  
 color purple background-color 
d8da3d  lt/stylegt lt/HEADgt 
 47Javascript
- Langage de script pour pages HTML 
- Crée par Netscape corp. en 1995 
- RIEN A VOIR AVEC JAVA 
- Orienté Objet 
- Langage interprété au chargement de la page par 
 le client
- Peut être placé nimporte où dans la page 
- ltscript type"text/javascript"gt xxxxxxx lt/scriptgt 
 
- ltscript src"xxx.js"gtlt/scriptgt 
48Javascript  Types, variables, fonctions
- 5 types de base 
- Chaînes de caractères 
- Nombres 
- Booléens 
- Objets 
- Fonctions 
- Déclaration de variable 
-  var maVariable  valeur 
-  maVariable  valeur
49Javascript  Types, variables, fonctions
- Déclaration de fonction 
-  function maFonction(argument1,argument2,etc) 
 
-  xxxxxxx 
-   
- Appel de fonction 
-  maFonction(1,2) 
- Accés à un champs 
- Notation pointée toto.titi
50Javascript  Hiérarchie dobjets 
 51Javascript  Objets par défaut
- navigator 
- Contient le nom et la version du navigateur, les 
 plugins installés
- window 
- Propriétés qui sappliquent à la fenêtre tout 
 entière
- document 
- Propriétés sur le contenu du document (titre, 
 couleur)
- location 
- URL actuelle 
- history 
- URLs visitées
52Javascript  Exemples
- lthtmlgt 
- ltheadgt 
- lt/headgt 
- ltbodygt 
-  ltscript type"text/javascript"gt 
-  var name  "Hege" 
-  document.write(name) 
-  document.write("lth1gt"name"lt/h1gt") 
-  lt/scriptgt 
- lt/bodygt lt/htmlgt
Affichage de la valeur dune variable
lthtmlgt ltheadgt lt/headgt ltbodygt ltscript 
type"text/javascript"gt var 
browserNamenavigator.appName if 
(browserName"Netscape")  alert("Hi 
Netscape User!")  lt/scriptgt lt/bodygt lt/html
gt
Détection du nom du navigateur 
 53Javascript  Aujourd'hui
  54Applets Java
- Crée par Sun Microsystems 
- Un plugin permet de faire tourner une machine 
 virtuelle (JVM) dans un navigateur
- Un client download le code java compile (.class, 
 .jar) et lexécute localement
- Lapplet sexécute dans une "Sand Box", elle a 
 des capacités très limitées, elle ne peut pas
- Lire/Ecrire/Effacer de fichiers localement 
- Créer des connexions réseau vers dautres 
 machines que celle dont elle est originaire
- Crée un ClassLoader 
- .. 
- On peut saffranchir de ces limitations en 
 signant les applets
55Applets Java  Cycle de vie
- Une applet passe par différentes phase 
- Chargement par le browser 
- Méthode init() 
- Exécution 
- Méthode start() 
- Fin dexécution temporaire 
- Méthode stop() 
- Fin dexécution définitive 
- Méthode destroy() 
- Il est possible de surcharger ces méthodes pour 
 changer les
-  comportements par défaut 
56Technologies côté serveur 
 57Les Cookies
- Chaîne de caractère générée par le serveur et 
 stockée par le navigateur
- Utilisés pour maintenir des informations de 
 navigations
- Voyagent dans les headers http 
- Structure 
- Nom 
- Valeur 
- Date dexpiration 
- Chemin de validité 
- Domaine de validité 
- Attribut de sécurité (si secure, alors SSL)
58CGI
- Common Gateway Interface 
- Permet lexécution de programmes externes par un 
 serveur http
- Le CGI permet de faire communiquer le serveur et 
 des programmes pour générer des pages web
- Un programme CGI peut être écrit dans un langage 
 qui
- Peut lire des flux en entrée 
- Sait traiter des chaînes de caractères 
- Écrire des flux en sortie 
- Peut être exécuté sur un serveur 
- Les plus utilisés sont Perl, C, C, Java
59PHP
- PHP Hypertext Processor 
- Langage de script avec syntaxe perl/C 
- Crée en 1994, actuellement en version 4 
- PHP3 totalement interpreté 
- PHP4 utilise un moteur de script (ZEND) pour 
 améliorer les performances
- PHP vient avec une énorme librairie de fonctions
60PHP
- PHP vient avec une énorme librairie de fonctions
10.19 Fonction d'exécution de programmes 10.20 
Forms Data Format 10.21 Fonctions filePro 10.22 
Système de fichiers 10.23 FTP 10.24 Fonctions 
de fonctions 10.25 Fonctions GNU Gettext 10.26 
GMP 10.27 Fonctions HTTP 10.28 Fonctions 
Hyperwave 10.29 Fonctions InterBase 10.30 
Fonctions ICAP 10.31 Fonctions Informix 10.32 
Images 10.33 Fonctions IMAP 10.34 Options PHP  
informations 10.35 Fonctions Ingres II 10.36 
Fonctions LDAP 10.37 Fonction mail 
10.1 Apache 10.2 Tableaux 10.3 Fonctions Aspell 
 10.4 Fonctions mathématiques sur des nombres de 
taille arbitraire 10.5 Fonctions de calendrier 
 10.6 Fonctions CCVS API 10.7 Fonctions Objets 
 10.8 Support COM pour Windows 10.9 Fonctions 
ClibPDF 10.10 CURL 10.11 Fonctions de paiement 
Cybercash 10.12 Fonctions de dates et heures 
 10.13 Fonctions dba 10.14 Fonctions dBase 
 10.15 Fonctions dbm 10.16 Accès aux dossiers 
 10.17 Fonctions DOM XML 10.18 Gestion des 
erreurs 
10.38 Fonctions mathématiques 10.39 Fonctions 
MCAL 10.40 Cryptage 10.41 Hash 10.42 Fonctions 
diverses 10.43 fonctions mSQL 10.44 Fonctions 
Microsoft SQL Server 10.45 Fonctions MySQL 
 10.46 Réseau 10.47 Fonctions NIS 10.48 Oracle 
8 functions 10.49 Fonctions Oracle 10.50 
Entrées/sorties 10.51 Ovrimos SQL 10.52 
Expressions régulières compatibles Perl 10.53 
Fonctions PDF 10.54 Verisign Payflow Pro 
functions 10.55 Fonctions PostgreSQL 10.56 
Fonctions POSIX 10.57 Pspell 
10.58 GNU Readline 10.59 Fonction GNU Recode 
 10.60 Expressions régulières 10.61 Satellite 
CORBA client extension 10.62 Sémaphores et 
gestion de la mémoire partagée 10.63 Gestion des 
sessions 10.64 Mémoire partagée 10.65 SNMP 
functions 10.66 Socket 10.67 Fonctions de 
chaîne de caractères 10.68 Fonctions Shockwave 
Flash 10.69 Sybase 10.70 ODBC 10.71 Fonctions 
URL 10.72 Fonctions sur les variables 10.73 
WDDX functions 10.74 Analyseur syntaxique XML 
 10.75 XSLT 10.76 YAZ 10.77 Zlib (Compression)  
 61PHP
- Le code PHP se trouve dans le fichier HTML côté 
 serveur
- Le serveur interprète le code PHP et envoie la 
 page modifiée au client
- Le serveur détecte les fichiers PHP grâce a leur 
 extension
- Intégration dans un fichier 
- lt? code php ?gt 
- lt?php code php ?gt 
- lt?PHP code php ?gt 
- ltSCRIPT LANGUAGE"php"gt code php lt/SCRIPTgt 
- Les instructions sont séparées par  
62PHP
lthtmlgt ltheadgt  lttitlegtPHP Testlt/titlegt lt/headgt
 ltbodygt  lt?php echo 'ltpgtHello Worldlt/pgt' 
?gtlt/bodygtlt/htmlgt 
Exécution par le serveur
lthtmlgt ltheadgt lttitlegtPHP Testlt/titlegt lt/headgt 
 ltbodygt ltpgtHello Worldlt/pgt lt/bodygt 
 lt/htmlgt 
 63PHP
- On peut interfacer facilement PHP et les forms 
 HTML
Client
ltform action"action.php" method"post"gt ltpgt 
Your name ltinput type"text" name"name" /gt lt/pgt 
 ltpgt Your age ltinput type"text" name"age" /gt 
 lt/pgt ltpgt ltinput type"submit" /gt 
 lt/pgt lt/formgt 
Hi lt?php echo _POST'name' ?gt.You are lt?php 
echo _POST'age' ?gt years old. 
Serveur
Hi Joe. You are 22 years old. 
Client 
 64ASP/ASP.net
- Active Server Pages crée par Microsoft 
- Pages HTML contenant du code de script exécuté 
 par le serveur
- Scripts supportés par défaut VBScript, JScript, 
 Perl, et REXX
- ASP.net ajoute tous les langages .net (VB.net, 
 C, Scheme, Smalltalk)
65Servlets et JSP
- Réponse de Sun a CGI 
- Servlets vs CGI 
- Efficacité la machine virtuelle tourne en 
 permanence, les
-  requêtes sont traitées par des threads, non 
 des process
- Ergonomie Java 
- Portabilité Java 
- Lourdeur Java 
- Java Server Pages ASP version Sun, langage de 
 script Java
- Pages identifiées par lextension .jsp
66Servlets et JSP
- Pour développer Java Servlet Development Kit 
 (JSDK)
- Nécessite lajout dun module au serveur 
- Tomcat pour Apache 
- Allaire JRun pour IIS 
- Les servlets sont placées dans un répertoire du 
 serveur et sont
-  accédées à travers une URL.
67Servlets et JSP - Fonctionnement
- JSP a un fonctionnement en 4 étapes 
- Requête reçue par le serveur 
- La page demandée est traduite en servlets 
- Les servlets sont compilées 
- Puis exécutés puis le résultat transmis au client 
68JSP - Exemples
- ltHTMLgt 
-  ltBODYgt 
-  Salut! La date est lt new java.util.Date() 
 gt
-  lt/BODYgt 
- lt/HTMLgt
ltHTMLgt ltBODYgt lt  
out.println( On cherche la date ) 
java.util.Date date  new java.util.Date() 
 gt Salut! La date est lt date gt 
lt/BODYgt lt/HTMLgt 
 69Servlets (A étudier)
- Se programme comme un classe Java classique 
- Implémente javax.servlet.http ou sous-classe 
 javax.servlet.http.HttpServlet
import java.io. import javax.servlet. 
 import javax.servlet.http. public class 
HelloWorld extends HttpServlet  public void 
doGet(HttpServletRequest request, 
 HttpServletResponse response) 
throws 
ServletException, IOException  
PrintWriter out  response.getWriter() 
out.println("Hello World")    
 70Moteurs de recherche et Web Services 
 71Moteurs de recherches
- Permettent de trouver de linformation sur le web 
- Indexent régulièrement des sites pour 
 construirent une base de données (possibilité de
 lempêcher avec le fichier robots.txt)
- Une recherche se fait dans la base de données 
-  ? important davoir une BD à jour 
- Actuellement 2ème génération 
- 1ere génération utilisation des mots clefs et 
 des tags META
- 2eme génération analyse de la structure des 
 pages (liens entrant, sortant) et construction
 dun indice de réputation
- 3eme génération utilisation des habitudes de 
 recherche et meilleure extraction dinformations
 contextuelles
72Google et PageRank
- Google est un moteur de 2eme génération 
- Utilise lalgorithme PageRank pour déterminer 
 ladéquation dune
-  page à la demande 
- PageRank est un indice de limportance dune page 
 web
- Chaque lien sortant est un  vote  pour une page 
- Plus une page a de votes, plus elle est 
 importante
- Variation de lalgorithme 
- Élimination des liens venant de  link farms  
- Diminution de limportance dun vote suivant la 
 cible
73Web services - Principes
- Accés au web traditionnellement à travers des 
 browsers
- Web Services API permettant à des programmes de 
 communiquer
-  avec des technologies www 
- Technologies clefs 
- XML, HTTP, SOAP, WSDL, UDDI 
- Idée 
- Des services sont publiés sur Internet 
- Des applications cherchent ces services et y 
 accèdent
- Questions 
- Quels services sont offerts? 
- Comment invoque-t-on ces services? 
- De quelles informations ont-il besoin? 
- Comment fournir ces informations? 
- Comment les réponses sont-elles envoyées? 
74WSDL
- Web Service Description Language 
- Fichier XML 
- ltdefinitionsgt contient la description des 
 services
- ltportTypegt groupe de méthode exposées 
- ltoperationgt méthode exposée 
- ltinputgt paramètre 
- ltoutputgt valeur de retour 
- ltmessagegt description du paramètre 
75WSDL - Exemple
- ltdefinitions name"MobilePhoneService"  gt 
-  ltportType name"MobilePhoneService_port"gt 
-  ltoperation name"getPrice"gt 
-  ltinput message"PhoneModel"/gt 
-  ltoutput message"PhoneModelPrice"/gt 
-  lt/operationgt 
-  lt/portTypegt 
-  ltmessage name"ListOfPhoneModels"gt 
-  ltpart name"models" type"tnsVector"gt 
-  lt/messagegt 
-  ltmessage name"PhoneModel"gt 
-  ltpart name"model" type"xsdString"gt 
-  lt/messagegt 
-  ltmessage name"PhoneModelPrice"gt 
-  ltpart name"price" type"xsdString"gt 
-  lt/messagegt 
- lt/definitionsgt 
76UDDI  SOAP
- Universal Description, Discovery and Integration 
- Annuaire dinformations (WSDL) sur les WS 
- Ressemble à un DNS ou un broker Corba 
- En général, les WS communiquent avec SOAP 
- Simple Object Access Protocol 
- XML sur http 
77SOAP - Exemple
- HTTP/1.1 200 OK Content-Type text/xml 
 charset"utf-8" Content-Lengthnnnn
- ltSOAP-ENVEnvelope 
-  xmlnsSOAP-ENV"http//schemas.xmlsoap.org/so
 ap/envelope/"
-  SOAP-ENVencodingStyle"http//schemas.xmlsoap
 .org/soap/encoding/"/gt
-  
-  ltSOAP-ENVBodygt 
-  ltmGetLastTradePriceResponse 
 xmlnsm"Some-URI"gt
-  ltPricegt14.5lt/Pricegt 
-  lt/mGetLastTradePriceResponsegt 
-  lt/SOAP-ENVBodygt 
- lt/SOAP-ENVEnvelopegt 
78Références
- http//www.w3.org 
- http//www.commentcamarche.net/internet/http.php3 
- http//www.cookiecentral.com 
- http//www-mrim.imag.fr/ressources/docPHP4_v4c/man
 uel_toc.html
- http//www.apl.jhu.edu/hall/java/Servlet-Tutorial
 /
- Cours de Master STIC Programmation et sécurité du 
 Web, Philippe Poulard  http//disc.inria.fr/perso
 /philippe.poulard/cours/master
- Fabrice.Huet_at_sophia.inria.fr Licence Miage 
 2005-2006