SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Introduction aux
serveurs Web
Serveur web ou httpd
• Serveur web ou serveur httpd (http
daemon) : logiciel qui sert des pages Web
aux clients
• Capable d'interpréter les requêtes http
arrivant sur le port associé au protocole
HTTP (port 80 par défaut) et de fournir
une réponse avec ce même protocole
• Par extension, on appelle souvent la
machine physique sur laquelle tourne le
logiciel un « serveur web »
Pages statiques, pages
dynamiques
• Les pages renvoyées par les
serveurs Web sont soit statiques
soit dynamiques
• Pages statiques
–ne comportent que du HTML, du
javaScript et des applets java
–extension .htm ou .html
–stockées telles quelles sur les
disques durs des serveurs
Pages statiques, pages
dynamiques
• Pages dynamiques
–créées (entièrement ou partiellement)
au moment où elles sont demandées au
serveur Web
–répondent à une demande spécifique
transmise par un formulaire
–doivent récupérer les informations
fournies par le client dans les éléments
du formulaire
Eléments de formulaire
• Page formulaire.html
• Présente tous les types d’éléments visibles
dans une page HTML
– éléments de type <input>
– élément de type <select>
– élément de type <textarea>
• <form> a deux attributs :
– method : get ou post
– action : programme à exécuter sur le serveur
Technologies actuelles
• Scripts CGI :
– norme, pas langage
– génèrent des pages complètes
– première technologie utilisée pour
générer des pages dynamiques, mais
encore très employée (grand stock de
scripts CGI existants)
– programmes complets qui peuvent être
écrits en différents langages
Technologies actuelles
• Pages ASP, JSP, PHP :
– écrites partiellement en HTML (la structure
globale de la page est en HTML)
– comportent des scripts « serveurs » (par
opposition aux scripts javaScript dits scripts
« clients »)
• exécutés par le serveur Web au moment où la page
est demandée
• interrogent généralement une base de données
• résultats insérés dans la page à la place des scripts.
– La page résultante apparaît au client comme
une page HTML statique (ce qu’elle n’est pas)
Choix de la technologie
• Le choix de la technologie serveur
dépend :
– du système d’exploitation de la
machine serveur
– du type de bases de données à
interroger
– de la charge que doit supporter le
serveur
Récupération des données d’un
formulaire
Les données d’un formulaire sont transmises à 3
variables d’environnement du serveur HTTP :
REQUEST_METHOD :
POST ou GET
CONTENT_LENGTH :
Taille en octets du corps de la requête
QUERY_STRING :
Données transmises après le ? dans l'URL
Méthode get
<form method="get" action="nom_programme">
Nom :
<input type="text" name="nom">
Pr&eacute;nom :
<input type="text" name="prenom">
Age :
<input type="text" name="age">
<input type="submit" value="OK">
</form>
Méthode get
• Au moment où l’utilisateur clique sur
le bouton submit, la ligne de l’URL
affiche par exemple :
http://site/nom_programme?nom=dupont&
prenom=antoine&age=25
• Tout ce qui suit le ? correspond aux
différents couples variable=valeur
provenant du formulaire
Méthode get
• Lorsque le formulaire de la page HTML
comporte l’instruction method="get" (ou ne
comporte pas d’attribut method), alors :
– REQUEST_METHOD prend la valeur get (valeur
par défaut)
– QUERY_STRING prend comme valeur tout ce qui
suit le ? dans l’URL
• QUERY_STRING prend donc ici la valeur
nom=dupont&prenom=antoine&age=25
• Les espaces éventuels sont remplacés par
des +
Méthode post
<form method="post" action="nom_programme">
Nom :
<input type="text" name="nom">
Pr&eacute;nom :
<input type="text" name="prenom">
Age :
<input type="text" name="age">
<input type="submit" value="OK">
</form>
Méthode post
• Au moment où l’utilisateur clique sur le
bouton submit, la ligne de l’URL
affiche seulement :
http://site/nom_programme
• Lorsque le formulaire comporte l’instruction
method="post" :
– REQUEST_METHOD prend la valeur post
– le programme reçoit, sur son entrée standard,
d’abord la demande, ensuite le codage des
paramètres
• La variable CONTENT_LENGTH permet de
déterminer la longueur des données à lire
Méthode post
• CONTENT-LENGTH aura donc ici la valeur
32 (nombre de caractères de la chaîne :
nom=dupont&prenom=antoine&age=25)
• Puis le serveur recevra sur son entrée
standard la chaîne :
nom=dupont&prenom=antoine&age=25
get ou post ?
• Chaque technologie (CGI, ASP, JSP, PHP)
dispose de fonctions permettant de
décoder la chaîne de requête, donc de
récupérer la valeur de chaque variable
• On emploie post si les valeurs des
variables ne doivent pas être visibles (mot
de passe) ou si les données sont longues
(textarea). On emploie get dans la plupart
des autres cas.
Principaux serveurs Web
• Apache (Unix / Linux)
(67 % environ de parts de marché)
• MIIS (Windows)
Microsoft Internet Information Server
(21 % environ de parts de marché)
• Java Web Server (versions pour
Unix/ Linux / Windows) et Jakarta-
Tomcat (qui cohabite avec Apache)
Situation comparative jusqu’en
2004 (Journal du Net)
Apache
• Pages HTML, scripts CGI (langages
divers), pages PHP
– opérationnel à grande échelle, open source
– TRES stable
– demande peu de ressources matérielles
– mais complexe à paramétrer et à administrer
• easyPHP (Apache pour Windows)
– outil de développement open source
– serveur mySQL intégré
MIIS
• Microsoft Internet Information Server
• Pages HTML, pages ASP (Visual Basic
ou JScript)
– opérationnel à grande échelle
– facile à installer et à administrer
– performances moyennes
– demande de grosses ressources
matérielles et logicielles
Java Web Server
• Pages HTML, pages JSP (langage java)
– propriété de SUN
– serveur complet plutôt destiné aux
entreprises
• Jakarta-Tomcat (Unix/Linux/ Windows)
– outil de développement open source
– souvent associé à d’autres logiciels serveurs
pour en étendre les fonctionnalités
Technologie 1
Scripts CGI
Introduction
• La programmation CGI (Common
Gateway Interface) permet de faire
construire dynamiquement des
documents par un serveur HTTP
• Elle est la plupart du temps associée au
serveur Apache, sous Unix et Linux
• Ce n’est PAS un langage, mais une
norme permettant l’écriture de scripts
CGI exécutables par Apache et générant
des pages Web complètes
Introduction
• Un script CGI peut être écrit dans de
nombreux langages
• Mais le langage choisi :
– doit pouvoir être exécuté sur une ligne
de commande sans faire appel à un autre
programme
– doit avoir directement accès aux
variables d'environnement du serveur
– doit permettre d'écrire sur la sortie
standard
Introduction
• On peut utiliser des langages
compilés ou interprétés
• Sous UNIX : PERL, C, C++, Fortran,
Pascal, TCL, sh, csh, ksh ou n'importe
quel autre shell
• Sous Windows : C, C++, Visual Basic
• Sous MAC-OS, AppleScript (langage
spécifique dédié)
Introduction
• S’ils sont écrits dans un langage
interprété (PERL, TCL, shell Unix,
Applescript…)
– le code doit préciser l’emplacement de
l’interpréteur
– il faut leur donner les droits d'exécution
Résultat d’un script CGI
• Un script CGI peut renvoyer une image,
un document HTML, un clip audio, des
références vers d’autres documents, etc.
• Le navigateur client doit savoir quel type
de document lui est renvoyé afin de
pouvoir le traiter correctement
• Le résultat de l’exécution d’un script CGI
doit alors comporter un en-tête (header)
qui précise la nature du document renvoyé
Résultat d’un script CGI
Content-type:text/html l’en-tête
ligne blanche de séparation obligatoire
<html> le corps
<head> de la page HTML
<title>resultat du script CGI</title>
</head>
<body> générée par
... le script CGI
</body>
</html>
Types MIME
• La syntaxe utilisée pour indiquer le
type de données (type MIME) est :
Content-type:type/subtype
• Exemples :
– text/html
– image/jpeg
– application/pdf
– application/rtf
Récupération des couples
paramètres-valeurs
• On peut décoder les couples
paramètres-valeurs sans utiliser de
module spécifique en analysant les 3
variables d’environnement
• Mais le module CGI.pm, souvent
installé avec Apache, automatise le
décodage des données
• Voir fichier formulaire et reponse.cgi
Technologie 2
pages ASP
Introduction
• Technologie liée au serveur MIIS de
Microsoft (25% des serveurs Web)
donc uniquement sous Windows
• Des scripts (écrits en Visual Basic
ou en JScript) sont insérés dans les
pages ASP et exécutés au moment
de la demande
• Les résultats de l’exécution des
scripts se mettent à la place des
scripts
Récupération des couples
paramètres-valeurs
• Dans formulaire1.html, on écrit :
<form action="reponse.asp" method="get">
• Réponse générée par la page
reponse.asp
• Si method="post" au lieu de
method="get", on remplace
<%=Request.QueryString("nom")%> par :
<%=Request.Form("nom")%>
• Serveur MIIS installé à Assas
Technologie 3
pages JSP
Introduction
• Technologie liée au serveur Java
Web Server de Sun (5% des
serveurs) mais aussi aux serveurs
JSWDK et Tomcat (ce dernier peut
être couplé avec Apache)
• Des scripts (en langage java) sont
insérés dans les pages JSP et
exécutés au moment de la demande
• Le résultat d’un script remplace le
script dans la page JSP
Récupération des couples
paramètres-valeurs
• Dans formulaire2.html, on écrit :
<form action="reponse.jsp" method="get"/"post">
• Réponse générée par la page
reponse.jsp, que la method soit get ou
post
• Serveur JSWDK installé à Charcot
• Serveur Tomcat installé à Assas
Technologie 4
pages PHP
Introduction
• Technologie la plus récente,
destinée à remplacer à terme les
scripts CGI sur les serveurs Apache
• Incontournable
• Des scripts (en langage PHP) sont
insérés dans les pages PHP et
exécutés au moment de la demande
• Le résultat d’un script remplace le
script dans la page PHP
Récupération des couples
paramètres-valeurs
• Dans formulaire3.html, on écrit :
<form action="reponse.php" method="get">
• Réponse générée par la page
reponse.php
• Si la method est post, on écrit :
<?php echo $_POST['nom'] au lieu de
<?php echo $_GET['nom']
• Pages normalement destinées au
serveur Apache
Serveurs de développement PHP
• Sous Windows, serveur easyPHP,
couplage d’un serveur Apache et
d’un serveur de bases de données
mySQL
• Serveur de développement, pas
serveur opérationnel à grande
échelle
• Serveur easyPHP installé à Charcot
• Serveur easyPHP installé à Assas

Weitere ähnliche Inhalte

Was ist angesagt?

cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en JavaFlorian Beaufumé
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EEYassine Badri
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Olivier Gutknecht
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchMourad DACHRAOUI
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1fayway
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorFlorian Beaufumé
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux ServletsFrançois Charoy
 
Développeurs, cachez-moi ça ! (Paris Web 2011)
Développeurs, cachez-moi ça ! (Paris Web 2011)Développeurs, cachez-moi ça ! (Paris Web 2011)
Développeurs, cachez-moi ça ! (Paris Web 2011)Hugo Hamon
 

Was ist angesagt? (18)

Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
Php
PhpPhp
Php
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en Java
 
les servlets-java EE
les  servlets-java EEles  servlets-java EE
les servlets-java EE
 
WebSocket avec Java EE 7
WebSocket avec Java EE 7WebSocket avec Java EE 7
WebSocket avec Java EE 7
 
Cours JSP
Cours JSPCours JSP
Cours JSP
 
Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09Chef - Paris BlockCamp - Nov 09
Chef - Paris BlockCamp - Nov 09
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
 
Soap
SoapSoap
Soap
 
PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1PHP/ExtJs experience feedback - IAV case - 1
PHP/ExtJs experience feedback - IAV case - 1
 
PHP mysql Xml.pdf
PHP mysql Xml.pdfPHP mysql Xml.pdf
PHP mysql Xml.pdf
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 
Introductions Aux Servlets
Introductions Aux ServletsIntroductions Aux Servlets
Introductions Aux Servlets
 
Développeurs, cachez-moi ça ! (Paris Web 2011)
Développeurs, cachez-moi ça ! (Paris Web 2011)Développeurs, cachez-moi ça ! (Paris Web 2011)
Développeurs, cachez-moi ça ! (Paris Web 2011)
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 

Andere mochten auch

Compu pack (1)
Compu pack (1)Compu pack (1)
Compu pack (1)chilaki
 
Cost-Effective Authentic and Anonymous Data Sharing with Forward Security
 Cost-Effective Authentic and Anonymous Data Sharing with Forward Security Cost-Effective Authentic and Anonymous Data Sharing with Forward Security
Cost-Effective Authentic and Anonymous Data Sharing with Forward Securitynexgentechnology
 
A Summary of the US Economy through Corporate Finance
A Summary of the US Economy through Corporate FinanceA Summary of the US Economy through Corporate Finance
A Summary of the US Economy through Corporate FinancePranav Ghai
 
Oates 501(c)(3) press.pptx
Oates 501(c)(3) press.pptxOates 501(c)(3) press.pptx
Oates 501(c)(3) press.pptxScott Oates
 
The Best Restaurants in Washington, DC
The Best Restaurants in Washington, DCThe Best Restaurants in Washington, DC
The Best Restaurants in Washington, DC49ThingstoDo
 
партиии и партийные системы
партиии и партийные системыпартиии и партийные системы
партиии и партийные системыTretyakova
 
8 Tips For Better Portion Control
8 Tips For Better Portion Control8 Tips For Better Portion Control
8 Tips For Better Portion ControlTerri DeVore
 
công ty làm clip quảng cáo tốt giá rẻ
công ty làm clip quảng cáo tốt giá rẻcông ty làm clip quảng cáo tốt giá rẻ
công ty làm clip quảng cáo tốt giá rẻbecki513
 
JCR References
JCR ReferencesJCR References
JCR ReferencesJim Rabuku
 
Remove background Service
Remove background ServiceRemove background Service
Remove background ServiceClippingpath247
 

Andere mochten auch (15)

Curriculum Vitae (CV) - Mr J D Mulder
Curriculum Vitae (CV) - Mr J D MulderCurriculum Vitae (CV) - Mr J D Mulder
Curriculum Vitae (CV) - Mr J D Mulder
 
FundingModel_ValueOfConceptNotes_Charts_en (1)
FundingModel_ValueOfConceptNotes_Charts_en (1)FundingModel_ValueOfConceptNotes_Charts_en (1)
FundingModel_ValueOfConceptNotes_Charts_en (1)
 
Compu pack (1)
Compu pack (1)Compu pack (1)
Compu pack (1)
 
Untitled 2
Untitled 2Untitled 2
Untitled 2
 
Cost-Effective Authentic and Anonymous Data Sharing with Forward Security
 Cost-Effective Authentic and Anonymous Data Sharing with Forward Security Cost-Effective Authentic and Anonymous Data Sharing with Forward Security
Cost-Effective Authentic and Anonymous Data Sharing with Forward Security
 
A Summary of the US Economy through Corporate Finance
A Summary of the US Economy through Corporate FinanceA Summary of the US Economy through Corporate Finance
A Summary of the US Economy through Corporate Finance
 
Oates 501(c)(3) press.pptx
Oates 501(c)(3) press.pptxOates 501(c)(3) press.pptx
Oates 501(c)(3) press.pptx
 
2558 project
2558 project 2558 project
2558 project
 
The Best Restaurants in Washington, DC
The Best Restaurants in Washington, DCThe Best Restaurants in Washington, DC
The Best Restaurants in Washington, DC
 
партиии и партийные системы
партиии и партийные системыпартиии и партийные системы
партиии и партийные системы
 
8 Tips For Better Portion Control
8 Tips For Better Portion Control8 Tips For Better Portion Control
8 Tips For Better Portion Control
 
công ty làm clip quảng cáo tốt giá rẻ
công ty làm clip quảng cáo tốt giá rẻcông ty làm clip quảng cáo tốt giá rẻ
công ty làm clip quảng cáo tốt giá rẻ
 
JCR References
JCR ReferencesJCR References
JCR References
 
Remove background Service
Remove background ServiceRemove background Service
Remove background Service
 
Pendahuluan
PendahuluanPendahuluan
Pendahuluan
 

Ähnlich wie Serveurs

hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.pptadiouf2
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Olivier Le Goaër
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur webNoël
 
Java script Introduction
Java script IntroductionJava script Introduction
Java script IntroductionMohamed MHAMDI
 
ppt1.pptx
ppt1.pptxppt1.pptx
ppt1.pptxadiouf2
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxWafaNeji
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsNeil Armstrong
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de phpGautier DUMAS
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09Claude Coulombe
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdfssuserc46a93
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
resume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfresume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfFootballLovers9
 

Ähnlich wie Serveurs (20)

Cours 8 squid.pdf
Cours 8 squid.pdfCours 8 squid.pdf
Cours 8 squid.pdf
 
hassclic270.ppt
hassclic270.ppthassclic270.ppt
hassclic270.ppt
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !Les Web Services en 60 diapos chrono !
Les Web Services en 60 diapos chrono !
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web08 01 mise en place d'un serveur web
08 01 mise en place d'un serveur web
 
Java script Introduction
Java script IntroductionJava script Introduction
Java script Introduction
 
ppt1.pptx
ppt1.pptxppt1.pptx
ppt1.pptx
 
spring.pdf
spring.pdfspring.pdf
spring.pdf
 
Chap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptxChap 3 - ASP .Net.pptx
Chap 3 - ASP .Net.pptx
 
Intellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server InternalsIntellicore Tech Talk 10 - Apache Web Server Internals
Intellicore Tech Talk 10 - Apache Web Server Internals
 
technologie web
technologie webtechnologie web
technologie web
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de php
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09
 
Cours php -partie 1.pdf
Cours php -partie 1.pdfCours php -partie 1.pdf
Cours php -partie 1.pdf
 
Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
resume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdfresume-theorique-m105-0903-2-622f06c594dce.pdf
resume-theorique-m105-0903-2-622f06c594dce.pdf
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
 

Serveurs

  • 2. Serveur web ou httpd • Serveur web ou serveur httpd (http daemon) : logiciel qui sert des pages Web aux clients • Capable d'interpréter les requêtes http arrivant sur le port associé au protocole HTTP (port 80 par défaut) et de fournir une réponse avec ce même protocole • Par extension, on appelle souvent la machine physique sur laquelle tourne le logiciel un « serveur web »
  • 3. Pages statiques, pages dynamiques • Les pages renvoyées par les serveurs Web sont soit statiques soit dynamiques • Pages statiques –ne comportent que du HTML, du javaScript et des applets java –extension .htm ou .html –stockées telles quelles sur les disques durs des serveurs
  • 4. Pages statiques, pages dynamiques • Pages dynamiques –créées (entièrement ou partiellement) au moment où elles sont demandées au serveur Web –répondent à une demande spécifique transmise par un formulaire –doivent récupérer les informations fournies par le client dans les éléments du formulaire
  • 5. Eléments de formulaire • Page formulaire.html • Présente tous les types d’éléments visibles dans une page HTML – éléments de type <input> – élément de type <select> – élément de type <textarea> • <form> a deux attributs : – method : get ou post – action : programme à exécuter sur le serveur
  • 6. Technologies actuelles • Scripts CGI : – norme, pas langage – génèrent des pages complètes – première technologie utilisée pour générer des pages dynamiques, mais encore très employée (grand stock de scripts CGI existants) – programmes complets qui peuvent être écrits en différents langages
  • 7. Technologies actuelles • Pages ASP, JSP, PHP : – écrites partiellement en HTML (la structure globale de la page est en HTML) – comportent des scripts « serveurs » (par opposition aux scripts javaScript dits scripts « clients ») • exécutés par le serveur Web au moment où la page est demandée • interrogent généralement une base de données • résultats insérés dans la page à la place des scripts. – La page résultante apparaît au client comme une page HTML statique (ce qu’elle n’est pas)
  • 8. Choix de la technologie • Le choix de la technologie serveur dépend : – du système d’exploitation de la machine serveur – du type de bases de données à interroger – de la charge que doit supporter le serveur
  • 9. Récupération des données d’un formulaire Les données d’un formulaire sont transmises à 3 variables d’environnement du serveur HTTP : REQUEST_METHOD : POST ou GET CONTENT_LENGTH : Taille en octets du corps de la requête QUERY_STRING : Données transmises après le ? dans l'URL
  • 10. Méthode get <form method="get" action="nom_programme"> Nom : <input type="text" name="nom"> Pr&eacute;nom : <input type="text" name="prenom"> Age : <input type="text" name="age"> <input type="submit" value="OK"> </form>
  • 11. Méthode get • Au moment où l’utilisateur clique sur le bouton submit, la ligne de l’URL affiche par exemple : http://site/nom_programme?nom=dupont& prenom=antoine&age=25 • Tout ce qui suit le ? correspond aux différents couples variable=valeur provenant du formulaire
  • 12. Méthode get • Lorsque le formulaire de la page HTML comporte l’instruction method="get" (ou ne comporte pas d’attribut method), alors : – REQUEST_METHOD prend la valeur get (valeur par défaut) – QUERY_STRING prend comme valeur tout ce qui suit le ? dans l’URL • QUERY_STRING prend donc ici la valeur nom=dupont&prenom=antoine&age=25 • Les espaces éventuels sont remplacés par des +
  • 13. Méthode post <form method="post" action="nom_programme"> Nom : <input type="text" name="nom"> Pr&eacute;nom : <input type="text" name="prenom"> Age : <input type="text" name="age"> <input type="submit" value="OK"> </form>
  • 14. Méthode post • Au moment où l’utilisateur clique sur le bouton submit, la ligne de l’URL affiche seulement : http://site/nom_programme • Lorsque le formulaire comporte l’instruction method="post" : – REQUEST_METHOD prend la valeur post – le programme reçoit, sur son entrée standard, d’abord la demande, ensuite le codage des paramètres • La variable CONTENT_LENGTH permet de déterminer la longueur des données à lire
  • 15. Méthode post • CONTENT-LENGTH aura donc ici la valeur 32 (nombre de caractères de la chaîne : nom=dupont&prenom=antoine&age=25) • Puis le serveur recevra sur son entrée standard la chaîne : nom=dupont&prenom=antoine&age=25
  • 16. get ou post ? • Chaque technologie (CGI, ASP, JSP, PHP) dispose de fonctions permettant de décoder la chaîne de requête, donc de récupérer la valeur de chaque variable • On emploie post si les valeurs des variables ne doivent pas être visibles (mot de passe) ou si les données sont longues (textarea). On emploie get dans la plupart des autres cas.
  • 17. Principaux serveurs Web • Apache (Unix / Linux) (67 % environ de parts de marché) • MIIS (Windows) Microsoft Internet Information Server (21 % environ de parts de marché) • Java Web Server (versions pour Unix/ Linux / Windows) et Jakarta- Tomcat (qui cohabite avec Apache)
  • 19. Apache • Pages HTML, scripts CGI (langages divers), pages PHP – opérationnel à grande échelle, open source – TRES stable – demande peu de ressources matérielles – mais complexe à paramétrer et à administrer • easyPHP (Apache pour Windows) – outil de développement open source – serveur mySQL intégré
  • 20. MIIS • Microsoft Internet Information Server • Pages HTML, pages ASP (Visual Basic ou JScript) – opérationnel à grande échelle – facile à installer et à administrer – performances moyennes – demande de grosses ressources matérielles et logicielles
  • 21. Java Web Server • Pages HTML, pages JSP (langage java) – propriété de SUN – serveur complet plutôt destiné aux entreprises • Jakarta-Tomcat (Unix/Linux/ Windows) – outil de développement open source – souvent associé à d’autres logiciels serveurs pour en étendre les fonctionnalités
  • 23. Introduction • La programmation CGI (Common Gateway Interface) permet de faire construire dynamiquement des documents par un serveur HTTP • Elle est la plupart du temps associée au serveur Apache, sous Unix et Linux • Ce n’est PAS un langage, mais une norme permettant l’écriture de scripts CGI exécutables par Apache et générant des pages Web complètes
  • 24. Introduction • Un script CGI peut être écrit dans de nombreux langages • Mais le langage choisi : – doit pouvoir être exécuté sur une ligne de commande sans faire appel à un autre programme – doit avoir directement accès aux variables d'environnement du serveur – doit permettre d'écrire sur la sortie standard
  • 25. Introduction • On peut utiliser des langages compilés ou interprétés • Sous UNIX : PERL, C, C++, Fortran, Pascal, TCL, sh, csh, ksh ou n'importe quel autre shell • Sous Windows : C, C++, Visual Basic • Sous MAC-OS, AppleScript (langage spécifique dédié)
  • 26. Introduction • S’ils sont écrits dans un langage interprété (PERL, TCL, shell Unix, Applescript…) – le code doit préciser l’emplacement de l’interpréteur – il faut leur donner les droits d'exécution
  • 27. Résultat d’un script CGI • Un script CGI peut renvoyer une image, un document HTML, un clip audio, des références vers d’autres documents, etc. • Le navigateur client doit savoir quel type de document lui est renvoyé afin de pouvoir le traiter correctement • Le résultat de l’exécution d’un script CGI doit alors comporter un en-tête (header) qui précise la nature du document renvoyé
  • 28. Résultat d’un script CGI Content-type:text/html l’en-tête ligne blanche de séparation obligatoire <html> le corps <head> de la page HTML <title>resultat du script CGI</title> </head> <body> générée par ... le script CGI </body> </html>
  • 29. Types MIME • La syntaxe utilisée pour indiquer le type de données (type MIME) est : Content-type:type/subtype • Exemples : – text/html – image/jpeg – application/pdf – application/rtf
  • 30. Récupération des couples paramètres-valeurs • On peut décoder les couples paramètres-valeurs sans utiliser de module spécifique en analysant les 3 variables d’environnement • Mais le module CGI.pm, souvent installé avec Apache, automatise le décodage des données • Voir fichier formulaire et reponse.cgi
  • 32. Introduction • Technologie liée au serveur MIIS de Microsoft (25% des serveurs Web) donc uniquement sous Windows • Des scripts (écrits en Visual Basic ou en JScript) sont insérés dans les pages ASP et exécutés au moment de la demande • Les résultats de l’exécution des scripts se mettent à la place des scripts
  • 33. Récupération des couples paramètres-valeurs • Dans formulaire1.html, on écrit : <form action="reponse.asp" method="get"> • Réponse générée par la page reponse.asp • Si method="post" au lieu de method="get", on remplace <%=Request.QueryString("nom")%> par : <%=Request.Form("nom")%> • Serveur MIIS installé à Assas
  • 35. Introduction • Technologie liée au serveur Java Web Server de Sun (5% des serveurs) mais aussi aux serveurs JSWDK et Tomcat (ce dernier peut être couplé avec Apache) • Des scripts (en langage java) sont insérés dans les pages JSP et exécutés au moment de la demande • Le résultat d’un script remplace le script dans la page JSP
  • 36. Récupération des couples paramètres-valeurs • Dans formulaire2.html, on écrit : <form action="reponse.jsp" method="get"/"post"> • Réponse générée par la page reponse.jsp, que la method soit get ou post • Serveur JSWDK installé à Charcot • Serveur Tomcat installé à Assas
  • 38. Introduction • Technologie la plus récente, destinée à remplacer à terme les scripts CGI sur les serveurs Apache • Incontournable • Des scripts (en langage PHP) sont insérés dans les pages PHP et exécutés au moment de la demande • Le résultat d’un script remplace le script dans la page PHP
  • 39. Récupération des couples paramètres-valeurs • Dans formulaire3.html, on écrit : <form action="reponse.php" method="get"> • Réponse générée par la page reponse.php • Si la method est post, on écrit : <?php echo $_POST['nom'] au lieu de <?php echo $_GET['nom'] • Pages normalement destinées au serveur Apache
  • 40. Serveurs de développement PHP • Sous Windows, serveur easyPHP, couplage d’un serveur Apache et d’un serveur de bases de données mySQL • Serveur de développement, pas serveur opérationnel à grande échelle • Serveur easyPHP installé à Charcot • Serveur easyPHP installé à Assas