les serveurs http iis apache. historique la version 1.0 est disponible début décembre 1995. elle...

85
Les serveurs HTTP IIS APACHE

Upload: emaurri-le-bras

Post on 03-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Les serveurs HTTP

IIS

APACHE

Page 2: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

APACHE

Page 3: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Historique• La version 1.0 est disponible début décembre 1995.

• Elle fut crée par une équipe de Webmaster indépendant.

• Cette équipe fondée par les développeurs du NCAS (National Center for Supercomputing Applications) était à l’origine du plus populaire serveur web de l’époque : Urbain-Champain.

• Dès sa sortie, APACHE fut immédiatement porté sur la pluspart des environnements.

• APACHE est, aujourd’hui, un serveur fiable et robuste utilisé par de grandes entreprises comme

• IBM• MICROSOFT qui utilise APACHE comme serveur Internet.

Voir http://www.toolinux.com/

Page 4: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configuration

1- arborescence

cgi-bin : par défaut contenant les cgi

conf : Contient les fichiers de configuration du serveur

log : Contient les log

users : Contient les sites des utilisateurs

htdocs : Répertoire par défaut contenant les pages publiées.

modules : Contient les modules optionnels pouvant complèter le serveur.

icons : Répertoires des Icones

Page 5: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configuration

• Les logsaccess.log : Contient les informations concernant les accès

au serveur. error.log : Contient les erreurs produites par le serveur.

• Les fichiers de configurationAu nombre de trois : access.conf : Droits d'accès aux répertoires du serveur srm.conf : Emplacement des principaux fichiershttp.conf : Directives de fonctionnement du serveur lui-même

Page 6: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configurationaccess.conf

Sur un répertoire

<Directory ”Nom répertoire">

Options None|All|Includes|ExecCGI order deny,allow

deny from all

allow from 126.52.3.52

AllowOveride None

</Directory>

Sur un URL

<Location /url>

</Location>

Sur un Fichier

<Files “fichier”>

</Files>

Allowoveride : le fichier .htaccess prend le relais sauf si NONE

AuthConfig : config pouvant être modifiée par .htaccess

FileInfo : droit accès aux fichiers

Page 7: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configuration

srm.conf

1. Etiquette définissant l’emplacement des principaux fichiers :

DocumentRoot, UserDir, DirectoryIndex, AccessFileName, ScriptAlias

Ex : DocumentRoot /Apache/htdocs

2. Permet de lier les types de fichiers à des icônes lorsque le mode FancyIndexing est sur on Ex : AddIcon /icons/binary.gif .bin .exe

3. Permet d’associer un entête à un type de fichier

Ex : AddType text/html .shtml

4. Association des erreurs avec des textes appropriés Ex :

#ErrorDocument 500 "Le serveur a commis une erreur”

#ErrorDocument 404 /missing.html

Page 8: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configuration

Httpd.conf

port : port TCP/IP par défaut 80

user : utilisateur sous lequel les CGI seront exécutés

ServerAdmin : adresse du gestionnaire de site

ServerRoot : répertoire de l’arborescence du serveur

ServerName : Nom du server

MaxClients : Nombre maximal de clients

ErrorLog : Fichier log des erreurs. relatif à ServerRoot.

CustomLog : Fichier des accès. Relatif à ServerRoot.

TimeOut : Durée maximale avant attente trop longue

Page 9: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Authentificationaccess.conf

<Location /exemple>AuthUserFile “c:\etc\passwd”

AuthName ‘Libellé”

AuthType Basic

require valid-user

</Location>

ATTENTION : Charger le module spécifique dans httpd.confLoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll

La création du fichier password doit être effectuée par l’outil htpasswd

Page 10: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Internet Information Server

Page 11: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

IIS : Définition

• Logiciel de Microsoft

• Pour Windows NT à partir de NT 4.0

• Pour Windows NT / XP : IIS 5)

Page 12: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

IIS : Définition

• Ensemble de 3 services sous Windows NT.

• Services utilisant le réseau internet

• Services de publication d’information «publishing services»

• Permet de rendre accessibles (mettre en ligne) des sites FTP, Web et NNTP.

Page 13: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

IIS : Les services

FTP HTTPSMTP...

IIS

Service Service Service

Page 14: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

IIS : DéfinitionService WWW

BROWSER WEB

SERVEUR NT AVEC IIS

FILTRE ISAPI

PROGRAMME CGIDLL ISAPI(dont ASP.DLL)

ASP

SGBD

Pages HTML

Page 15: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configurer IIS Gérer l’accès aux sites

Onglet «Advanced»

• Autoriser certaines adresses IP ou domaines à se connecter

• Autoriser toutes les adresses IP ou domaines à se connecter sauf certains

• Limiter l’utilisation du réseau. Cumul de l’utilisation de tous les services

Page 16: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configurer IIS Le compte du logon anonyme

Onglet «Service»

• Compte créé à l’installation d’IIS, avec le nom «IUSR_NomOrdinateur»

• Compte utilisé par NT pour les personnes qui se connectent en anonyme à un des services quand on autorise ce type d’accès

Page 17: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configurer IIS Propriétés des répertoires

• Permettent de limiter les possibilités du client sur ces répertoires

• Propriétés «Read» et «Write» pour FTP

• Propriétés «Read» et «Execute» pour WWW

Page 18: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Configurer IISLes serveurs virtuels

Onglet «Directory»

• Permettent d’utiliser une autre adresse IP sur le même serveur Web

• On a donc plusieurs serveurs Web sur la même machine

Page 19: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Les technologies Serveur

SSI / CGI / ISAPI /

JAVA SERVLET / JSP /

PHP / ASP / DOT NET

Page 20: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

SSI

Page 21: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

SSILes SSI (Server Side Include)

Si elles sont supportées par le serveur http, elle seront compatibles avec tous les navigateurs puisque le code des SSI sera transformé en HTML.

Le format d'un appel SSI est le suivant : <!--#<balise><variables> -->

Les balises reconnues sont break, config, echo, email, exec, if, include, fsize, flastmod, label, goto et odbc.

Les commandes

break : La balise break permet de terminer le document HTML

config : Utilisée pour positionner les options de sortie HTML.

<!--#config timefmt="%d/%m/%y" -->

Page 22: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

SSI

echo : Permet d'insérer certaines données dans une page HTML. Utilisez la variable var

<!--#echo var="DATE_LOCAL" --> est la date du jour

Afficher des variables d'environnement :

DATE_LOCAL la date et l'heure locales du serveur HTTP DOCUMENT_NAME le nom complet du document REMOTE_ADDR l'adresse IP du client distant REMOTE_HOST le nom de la station cliente REMOTE_USER le nom du client distant

Page 23: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

SSIexec : La balise exec permet d'exécuter une commande quelconque par le système d'exploitation du

serveur.<!--#exec cmd='date' -->

goto : La balise goto permet de sauter vers une étiquette #label sans exécuter le code entre l'instruction courante et l'étiquette.<!--#goto ="suite" --> blablabla non renvoyé <BR>

<!--#label ="suite" -->

if : La balise if permet d'effectuer une exécution sous certaines conditions, par exemple, d'afficher une portion de texte HTML si une condition est remplie.

La syntaxe générale de la balise est la suivante : <!--#if expr="expression" --> ... <!--#elif expr="expression" --> ... <!--#else --> ... <!--#endif -->

include : Permet d'inclure le contenu d'un fichier dans la page HTML<!--#include vitual|file = "fichier" -->

Page 24: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

SSI Exemple

<!--#if expr="${HTTP_USER_AGENT} = /MSIE 5/" --><!--#set var="brtype" value="msie5" -->

<!--#elif expr="${HTTP_USER_AGENT} = /MSIE 4/" --><!--#set var="brtype" value="msie4" -->

<!--#elif expr="${HTTP_USER_AGENT} = /MSIE 3/" --><!--#set var="brtype" value="msie3" -->

<!--#elif expr="${HTTP_USER_AGENT} = /MSIE 2/" --><!--#set var="brtype" value="msie2" -->

<!--#else --><!--#set var="brtype" value="unknown" -->

<!--#endif -->

<!--#include file="$brtype.txt"-->

Page 25: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

CGI

Page 26: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Objectifs du chapitre

• Présentation des CGI

• Programme CGI

• Fonctionnement

• Ecriture d’une application CGI

• Utilisation avancée de CGI

Page 27: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Possibilités d'extension

API filtres ISAPI API filtres ISAPI API filtres ISAPI API filtres ISAPI

API applications ISAPI API applications ISAPI

Windows NT Server,Windows NT Server,Internet Information ServerInternet Information ServerC

GI

CG

I

Client WebClient WebClient WebClient Web

PerlPerlPerlPerl

ApplicationApplicationsimplesimple

ApplicationApplicationsimplesimple

applicationsapplicationsISAPI ISAPI

applicationsapplicationsISAPI ISAPI

InternetInternetDatabaseDatabase

ConnectorConnector(IDC)(IDC)

InternetInternetDatabaseDatabase

ConnectorConnector(IDC)(IDC)

scripts Perl scripts Perl scripts Perl scripts Perl

FiltresFiltresISAPIISAPI

ActiveActiveServerServerPagesPages(ASP)(ASP)

ActiveActiveServerServerPagesPages(ASP)(ASP)

Page 28: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Présentation de CGI«Common Gateway interface»

• Protocole de communication

• Permet à un browser Web et à un programme situé sur un serveur Web de dialoguer

Page 29: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Le support des CGI sur IIS

• Support total des applications CGI

• Basé sur STDIN/STDOUT

• Généralement en Perl

• Accès à toutes les variables HTTP

• Les applications CGI s'exécutent en dehors du processus

• Les applications CGI peuvent s'exécuter dans le contexte du client ou du serveur

Page 30: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Les Variables d'environnement CGI

• En-têtes HTTP

• AUTH_TYPE

• CONTENT_LENGTH

• GATEWAY_INTERFACE

• LOGON_USER

• PATH_INFO

• PATH_TRANSLATED

• QUERY_STRING

• REMOTE_ADDR

• REMOTE_HOST

• REMOTE_USER

• REQUEST_METHOD

• SCRIPT_NAME

• SERVER_NAME

• SERVER_PORT

• SERVER_PORT_SECURE

• SERVER_PROTOCOL

• SERVER_SOFTWARE

• URL

Page 31: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Présentation de CGI

f

Client Serveur Web

Client Serveur Web

Programme

Requête «classique»

Requête «CGI»

Page 32: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Programme CGI Figures imposées

• Respecter le protocole CGI en entrée :– Lire les paramètres d’entrée depuis «stdin» (si

la méthode utilisée par le browser est «POST»)– Lire les paramètres d’entrée depuis une variable

d’environnement (si la méthode utilisée par le browser est «GET»)

Page 33: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Programme CGI Figures imposées

• Respecter le protocole CGI en sortie : – Préciser le type de données retournées ( en

précisant la valeur de «Content-type»)– Retourner le résultat par «stdout»

Page 34: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Fonctionnement : Envoi d’informations à partir du browser

Envoi à partir d’un formulaireExemple de code HTML :<form action="cgi-bin/NomDuProgramme.exe" method="POST">

<input type="text" size="20" maxlength="256" name="NomDuControl" value="defaut">

<input type="submit" value="Submit Form"></FORM>=>Un champ de saisie pour entrer la requête et un bouton

«submit» pour l’exécuter

Page 35: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Fonctionnement : Envois d’informations à partir du browser

GET• Chaîne de requête à la

suite de GET• Le programme lit

depuis une variable d’environnement

• Chaîne limitée à 1024 octets

POST• Chaîne de requête

envoyée séparément• Le programme lit ses

arguments depuis stdin

• Pas de limite

Méthodes de passage de paramètres

Page 36: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Fonctionnement : Renvoi des informations au browser

• Le programme utilise stdout pour renvoyer au serveur le résultat

• Il peut renvoyer une page HTML, une image, ou d’autres types de données en modifiant le Content-type du header HTTP

Page 37: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Ecriture d’une application CGI Exemple : L’application la plus simple

void main() {printf("Content-type: text/html\n\n") ;

printf("<html>\n") ;printf("<head><title>Hello World</title> </head>\n") ;

printf("<body>\n") ;printf("<h1>Hello, world.</h1>\n");printf(«</body></html>\n«);}

Page 38: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

ISAPI

Page 39: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Objectifs du chapitre

• Présentation d’ISAPI

• Différences avec CGI

• Les filtres

• Les extensions

Page 40: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Présentation d’ISAPIInternet Server Application Programming Interface

• Technologie de Microsoft et de Process Software, apparue en 1995

• Permet de doter les serveurs Web d’extensions logicielles

Page 41: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Présentation d’ISAPI

Ces applications peuvent:

• Fonctionner avec Microsoft Internet Information Server

• Etre créées avec Visual C++ (à partir de la version 4.1)

Page 42: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Présentation d’ISAPI

Ces applications prennent la forme de :

• Filtres : applications qui «filtrent» toutes les données circulant entre le browser et le serveur Web

• Extensions : comparables à des applications CGI, sont exécutées par le serveur suite à des requêtes du browser

Page 43: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Présentation d’ISAPI

BROWSER WEB SERVICE WWWFiltre ISAPI

Client Serveur

FILTRE

BROWSER WEB SERVICE WWW

EXTENSION

Application ISAPI

Page 44: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Introduction à la Programmation ISAPI

• Les filtres ISAPI– Contrôler l'activité

– Modifier le comportement

– Modifier les Entrées/Sorties

– Participer aux opérations intermédiaires

• Les extensions ISAPI– Etendent les

fonctionnalités

– Hautes performances

– Exécution In-process

– Plug-ins

– Activation par Script

– Maintain state

Page 45: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Les filtresDescription

• Dll qui se placent entre le browser et le service Web

• Toutes les données qui circulent, à partir ou vers le browser, peuvent être lues et modifiées

Page 46: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Les filtres Description

BROWSER WEB SERVICE WWWFiltre

Client Serveur

Page 47: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Les filtres ISAPI

• Pourquoi: Opérations particulières, superviser/modifier les entrées/sorties, applicables à toutes les requêtes

• Architecture: Appelle les filtres pour des opérations immédiates– Plusieurs filtres peuvent être actifs

simultanément– Plusieurs threads peuvent faire appel aux

filtres

Page 48: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Le support d'un Filtre

• Plusieurs filtres peuvent être enregistrés et traiter chaque requête

• Chaque filtre doit indiquer à quel type de notification il s'intéresse

• Quand un filtre est appelé, il peut:– Traiter entièrement la requête– Traiter la requête et la passer au filtre suivant du

type de notification courante– Assumer tout le traitement de la notification

courante

Page 49: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Différences entre ISAPI et CGI

ISAPI• Des .dll• Des filtres et des

applications• Encore très peu

répandu

CGI• Des .exe• Seulement des

applications• Standard mondial

Page 50: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Différences entre ISAPI et CGI

ISAPI• Souvent utilisé avec

un langage compilé comme C ou C++

• Outil d’aide à la réalisation en C++, pour les handlers et les entrées

CGI• Souvent utilisé avec

un langage de script (PERL)

• Rien, le développeur doit décrypter la chaîne d’entrée tout seul comme un grand

Page 51: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Différences entre ISAPI et CGI

ISAPI• Une dll regroupe un

ensemble de fonctions• Pour n utilisateurs, une

dll est en mémoire• A chaque utilisateur,

un thread est lancé

CGI• Un exe contient une

seule fonction• Pour n utilisateurs, n

exe sont en mémoire• A chaque utilisateur,

un processus est lancé

Page 52: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

Différences entre ISAPI et CGI

Dll ISAPI

Service Web Service Web3 utilisateurs 3 utilisateurs

ApplicationCGI

threads

Page 53: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

JAVA

Page 54: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

JAVA - Les SERVLET

•Le JSDK (Java Servlet Development Kit) fournit un modèle de classes pour l'écriture des Servlet. Il est disponible sur : http://java.sun.com/products/servlet.

•Les Servlets sont des modules JAVA exécutés côté serveur pour générer des pages HTML dynamiques. Les Servlets sont en fait des petits serveurs spécialisés.

•Les servlets s'exécutent dans un moteur de servlet (parfois appelé conteneur de servlet) utilisé pour établir le lien entre la servlet et le serveur web

Page 55: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

JAVA - Les SERVLET•Le Conteneur Servlet se charge du cycle de vie d'une Servlet. Il crée un Instance, appelle la méthode init () de l'instance, puis il appelle la méthode service () et enfin avant de la détruire appelle la méthode destroy ().

•Une Servlet est crée en étendant soit la classe GenericServlet, soit la classe HttpServlet.

•GenericServlet est déjà une extension de HttpServlet. Elle propose des fonctionnalités spécifique à HTTP tout en simplifiant la création d'une Servlet.

•Une Servlet est chargée une seule fois et peut traiter plusieurs requêtes HTTP .

Page 56: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

JAVA - La structure d'une SERVLET•Chaque requête provoque la création d'un Thread par le moteur qui éxécute la méthode Service de la Servlet.

•S'il s'agit une méthode GET (resp. POST), la méthode service transmet la requête à la méthode doGet (resp. doPost).

•Pour établir la réponse HTTP afin d'envoyer une réponse au client,• l'objet HttpServletReponse de la méthode doGet (resp. doPost), permet :

• d'envoyer le type MIME par la méthode setContentType • d'extraire l'objet PrintWriter grâce la méthode getWriter () qui va permettre de générer le contenu du flot de sortie.

Page 57: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

JAVA - Exemple d'une SERVLETimport javax.servlet.*;import javax.servlet.http;import java.io.*;

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) {

res.setContentType("text/html");

PrintWriter out = res.getWriter ();

out.println("<HTML>");out.println("<BODY>");out.println("<HELLO WORLD>");

out.println("</BODY>");out.println("</HTML>");out.close ();

}}

Servlet

doGet

Type MIME

Flot de sortie

Page 58: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

LES JSP

• JSP (Java Server Page) • Les 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

• 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.

Page 59: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

LES JSP - Exemple

<html><body><% String visitor = request.getParameter("name");if (visitor == null) visitor = " World"; %> Hello, <%= visitor %>! </body>

</html>

Page 60: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

JSP - Installation

• Les éléments nécessaires pour utiliser JSP sont : – un serveur HTTP (Apache, IIS…) – un logiciel implémentant le conteneur (ou

moteur) de JSP est nécessaire (Tomcat, Netscape entreprise Server)

– une Java Virtual Machine tel que JDK (Java Development Kit) qui contient une JVM, un compilateur...

Page 61: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

JSP - Exécution

• Les JSP sont dérivées des servlets (les JSP sont transformées par le conteneur en Servlet),

• Elles sont donc compilées en une classe Java dérivant de la classe HttpServlet

• 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.

Page 62: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

JSP - Exécution

Page 63: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP

Page 64: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Introduction• PHP, signifie "PHP: Hypertext Preprocessor" (Preprocesseur HyperTexte), est un langage de script HTML.

• La plupart de sa syntaxe est empruntée aux langages C, mais y ajoute plusieurs fonctionnalités uniques.

• Le but de ce langage est de permettre aux développeurs web de concevoir rapidement des sites, aux pages dynamiques

• PHP 3.0 est un logiciel libre : vous pouvez le modifier et/ou le modifier sous licence GNU General Public License, telle que publiée par Free Software Foundation;

• Sources, documentation, executable : www.php.net

•PHP supporte de nombreuses bases de données (et aussi ODBC).

Page 65: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Installation

• Le langage PHP a été conçu durant l'automne 1994 par Rasmus Lerdof.

• Multi-plateforme, il est disponible sur UNIX, LINUX, WINDOWS.

• Sur WINDOWS, PHP peut-être couplé avec :

· Personal Web Server (Version la plus récente recommandée)· Internet Information Server 3 ou 4· Apache 1.3.x· Omni HTTPd 2.0b1

Page 66: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Premier Exemple

<html><head>

<title>Exemple</title></head>

<body><?php echo ”Je suis un script PHP!"; ?>

</body></html>

Instruction PHP

Balises HTML

• PHP est un langage de script HTML, qui fonctionne coté serveur.

• Il possède les même fonctionnalités que les autres langages permettant d'écrire des scripts CGI, comme collecter des données, générer dynamiquement des pages web ou bien envoyer et recevoir des cookies.

Page 67: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les variables & Les variables dynamiques

• Une variable classique est affecté avec l'instruction suivante:

$a = "bonjour";

• Il est pratique d'avoir des noms de variables qui sont variables.

• C'est-à-dire un nom de variable qui affecté et utilisé dynamiquement.

• Une variable dynamique prend la valeur d'une variable et l'utilise comme nom d'une autre variable.

$$a = "le monde";

• A ce niveau, deux variables ont été définies et stockées dans l'arbre des symboles

$a avec comme valeur "bonjour" et $bonjour avec comme valeur "le monde".

Page 68: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les types

• PHP est faiblement typé.

• Les type de base sont : ENTIER, les DOUBLE, les CHAINES :

$str = <<< FINCeci est unechaine decaractèresFIN;

• Pas de type DATE, ni de type BOOLEAN.

Page 69: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Assignation par référence

• Le & placé au début de la variable qui est assignée permet d’assigner par référence.

<?php$v1 = ‘Valeur1’; $v2 = &$v1; $v2 = ‘valeur 2’; echo $v1; echo $v2;

?>

• Seule les variables nommées peuvent être assignées par référence.

Page 70: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les variables prédéfinies• Variables Apache•Elles sont spécifiques et créées par le serveur Apache.SERVER_NAME : nom du serveur hôte SERVER_PROTOCOL: Nom et révision du protocole de communication REQUEST_METHOD : Méthode de requête utilisée pour accéder à la pageQUERY_STRING : La chaîne de requête, DOCUMENT_ROOT : La racine sous laquelle le script courant est exécuté

• Variables PHPElles sont créées par PHPargv : Tableau des rguments passées au script. argc : Contient le nombre de paramètres de la ligne de commande passés au script PHP_SELF : Le nom du fichier du script en cour d'éxécution, HTTP_COOKIE_VARS : Un tableau associatif HTTP_GET_VARS : Un tableau associatif HTTP_POST_VARS : Un tableau associatif

• Variables d’environnementCes variables sont importées depuis l'environnement sous lequel PHP fonctionne.EX : PATH

Page 71: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les tableaux

Deux types de tableaux :tables de hashage (tableaux associatifs) tableaux indexés (tableaux scalaires).

Tableaux à une dimension :<?php

$a[0] = "abc";$a[1] = "def";$b["foo"] = 13;

?>Ajout d’un nouvel élément en fin de tableau

<?php$a[] = "Bonjour"; // $a[2] == "Bonjour";$a[] = "Monde"; // $a[3] == "Monde";

?>

Un ensemble de fonctions sont disponibles pour agir sur les tableaux :asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), uksort(), count().

Page 72: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les tableaux parcours

<?php

reset($arr);while (list($key, $value) = each ($arr)) {

echo "Clé: $key; Valeur: $value<br>\n";}

foreach ($arr as $key => $value) {echo "Clé: $key; Valeur: $value<br>\n";

}

?>

Pointeur interne du tableau au début

Retourne une paire clé /valeur

Permet d ’assigner une liste de variables

Extension de foreach

Page 73: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les tableaux à plusieurs dimensionsPour chaque dimension du tableau, ajouter une nouvelle [clef] à la fin.

<?php$a[1] = $f; $a["foo"] = $f;$a[1][0] = $f; $a["foo"][2] = $f;$a[3]["bar"] = $f; $a["foo"][4]["bar"][0] = $f; #

?>

La méthode la plus simple à comprendre est l’utilisation de la fonction array(). $a = array( "pomme" => array(

"couleur" => "rouge","saveur" => "sucrée","forme" => "rond"),

"orange" => array("couleur" => "orange","saveur" => "amère","forme" => "rond”));

Mélanger les types Associatifs / Scalaires

Page 74: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les opérateurs

• Les opérateurs arithmétiques : + - * / %• Les opérateurs d'assignement : += -= *= /= %= .=• Bitwise Operators : & | ^ ~ << >>• Opérateurs de comparaison : == === != < > <= >=

=== Egalité et meme type

• Opérateur de contrôle d'erreur : @@ permet d’ignorer les warning

• Opérateur d'exécutions : ` `$d = ` DIR `

•Incrementing/Decrementing Operators : ++ --•Les opérateurs logiques : && and || or xor ! •String Operators : .

Page 75: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Require & Include• require()La commande require() se remplace elle même par le contenu du fichier spécifié, comme les préprocesseurs C le font avec la commande #include.

• include()La fonction include() inclue et évalue le fichier spécifié en argument.<?php$files = array (’premier.inc’, ’second.inc’, ’troisieme.inc’);for ($i = 0; $i < count($files); $i++) {

include $files[$i];}?>include() diffère de require() car le fichier inclus est ré-évaluée à chaque fois que la commande est exécutée.

include_once () & require_once ()

Page 76: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les structures de contrôles• Les conditionnelles

• if else elseif• switch case

• Les itératives• while• do while• for• foreach

Exemple : $a = array (1, 2, 3, 17);foreach ($a as $v) {

print "Valeur courante de \$a: $v.\n";}

• Les ruptures• break• continue

Page 77: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les fonctions• En PHP, les fonctions peuvent être utilisées avant d’étre définies.• PHP supporte un nombre variable d’arguments et l’assignation des valeurs par défaut.

func_num_args() : retourne le nombre d’arguments de la fonction

func_get_arg(n) : retourne un argument

func_get_args() : retourne un tableau contenant les arguments

<?PHPfunction test (arg1 = val_defaut1, arg2 = val_defaut2) { .. }

test ();?>

Page 78: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les fonctions passage des arguments par références

• Par défaut, les arguments sont passés à la fonction par valeur.• PHP supporte le passage d’arguments par référence.

• Pour passer un argument par référence, utiliser ’&’ devant l’argument dans la déclaration de la fonction :

function add_some_extra(&$string) { $string .= ’, et un peu plus.’;

}$str = ’Ceci est une chaîne’; add_some_extra($str); echo $str;

Pour passer une variable par référence à une fonction ponctuellement :function add_some_extra($string) { … }$str = ’Ceci est une chaîne’; add_some_extra(&$str); echo $str;

Page 79: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Class & Objet• Une classe est un ensemble de propriétés et de méthodes.

• Une classe est définie par la syntaxe suivante :class exClass {

var $p1;var $p2;function exClass () {}

}

• Un objet est instancié par l’instruction new :obj = new exClass ();obj->p1 = ‘TEST’;

• Une Class peut-être enrichie par héritage : class exFilleClass extends exClass {}

• Un objet peut se référencer par l’objet $this.

Définition d ’une class

Instanciation d ’un objetAccès aux propriétés &Méthodes d ’un objet

Héritage

Référence l ’objet courant

Page 80: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Images Dynamiques<?php

Header("Content-type: image/png");

$string=implode($argv," ");$im = ImageCreatefromPNG("images\\bouton.png");$orange = ImageColorAllocate($im, 0, 20, 60);$px = (imagesx($im)-7.5*strlen($string))/2;$py = (imagesy($im))/2;ImageString($im,3,$px,$py,$string,$orange);ImagePNG($im);ImageDestroy($im);

?>

Image de fond

Entete HTTP

• PHP n'est pas limité à la création de fichier HTML.

• Il peut aussi servir à créer des images GIF/JPG/PNG à la volée,.

• Cet exemple sera utilié dans une page HTML : <img src="button.php3?text">.

Identifiant IMG

Créée L’IMAGE

Page 81: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Images Cliquables HTML><BODY>

<FORM action = 'index.php' name = 'img'><INPUT type = "image" src = "image.php?CNAM">

</FORM><BR>

<?phpprintf ("X : %d <BR>",$x);printf ("Y : %d <BR>",$y);

?></BODY></HTML>

Coordonnées X, Y du clique

Permet de récupérer dans un script PHP les coordonnées X, Y relatives d’un clique effectuée sur une Image.

Image

Page 82: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Les COOKIES

• Le PHP supporte les cookies HTTP de manière totalement transparente,

• La fonction setcookie() sert à créér un cookie.

• Tout cookie envoyé depuis le client sur le serveur sera stocké sous forme de variable, comme pour les méthodes POST ou GET.

• Pour assigner plusieurs valeurs à un seul cookie, il vous faut ajouter les caractères [ ] au nom du cookie.

• Par exemple :SetCookie ("MyCookie[]", "Testing", time()+3600);

Page 83: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Accès à une Base de données

• PHP dispose, en natif de plusieurs fonctions spécifiques aux bdd du marché :

•dBase•INGRES•INFORMIX•INTERBASE•SQL SERVER•mSQL

$con = mysql_connect("126.52.3.52") or die ("erreur”);

mysql_select_db("test");r = mysql_query ("select * from personne);

mysql_result (r,1,1);

echo (r);

mysql_close($con);

•MySQL•ODBC•ORACLE•Ovrimos SQL•PostgreSQL

Connexion au serveur

Base Requête

Résultat

Page 84: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Fonctions MySQL

•mysql_connect (s,u,p) : connexion à un serveur de données

•mysql_select_db(bd) : selectionne une bd

•mysql_query (req) : envoie une rêquete au serveur

•mysql_num_fields () : nombre de champs

•mysql_num_rows () : nombre de lignes

•mysql_result (result, row,field): contenu d’un champ

•mysql_field_name (i) : nom du champ

•mysql_field_type (i) : type d’un champ

Page 85: Les serveurs HTTP IIS APACHE. Historique La version 1.0 est disponible début décembre 1995. Elle fut crée par une équipe de Webmaster indépendant. Cette

PHP - Fonctions Supplémentaires en PHP

• Gestion de l’annuaire LDAP• Gestion de la DOM XML• Correcteur orthographique• Gestion des email• Gestion FTP• Gestion réseaux• Gestion des paiements sécurisés• Gestion des fichiers ZIP• Gestion des PDF• Génération d’objet FLASH• Cryptage