Programmation multimédia 3 Les objets de ASP Semaine 2 Préparé par Marc Aubé Source :

Preview:

Citation preview

Programmation multimédia 3

Les objets de ASPSemaine 2Préparé par Marc AubéSource : www.laltruiste.com

Les objets de ASP

Objets à étudier Request: pour obtenir de l'information provenant de

l'usager Response: pour envoyer de l'information à l'usager Server: pour contrôler le serveur + utilitaires Session: pour gérer une session usager Application: pour contrôler l'état d'une application ASPError: contient des informations relatives à une

erreur dans un script ASP. ObjectContext: correspond en quelque sorte à un

objet racine autour duquel s'articulent les objets intrinsèques

L'objet Request

cet objet permet d'obtenir l'information de l'usager

on dit qu'il contient différentes collections. Les collections qu'il contient sont dans les variables: QueryString, Form, Cookies, ServerVariables

cet objet se manipule comme ceci Request[.Collection]("variable")[(index)|.Count]

Un exemple

Il faut noter que dans certains cas les formulaires retournent plusieurs valeurs pour un même champ. C'est le cas par exemple de listes à choix multiples. Prenons l'exemple suivant:

Quelles villes canadiennes avez-vous déjà visitées?

Un exemple (suite)

Le HTML pour ceci aura cette forme: <P>Quelles villes canadiennes avez-vous déjà visitées?

<br></P> <FORM ACTION="#"><SELECT NAME="villes" MULTIPLE SIZE="6">

<OPTION> Halifax<OPTION SELECTED> Montréal<OPTION> Regina<OPTION SELECTED> Toronto<OPTION SELECTED> Vancouver<OPTION> Victoria

</SELECT><INPUT TYPE=SUBMIT NAME=submit VALUE="Envoyer">

</FORM>

Un exemple (suite)

Et nous aurons Request.QueryString("villes").Count égale à 3.Si je veux imprimer le troisième choix, je dirai: Request.QueryString("villes")(3) (l'index va ici de 1 à Count)

QueryString et Form

le QueryString contient des données provenant: d'un formulaire soumis avec la méthode GET

d'un URL incluant une partie de données à la fin, juste après le "?", exemple: http://www.xyz.com/commande.asp?itemno=2234&marchand=donini

Exemple d'extraction de données:

<%= Request.QueryString("itemno") %>

QueryString et Form

le Form contient des données provenant: d'un formulaire soumis avec la méthode

POST (ces données sont envoyées avec la requête HTTP)

exemple:

<%= Request.Form("villes") %>

Ignorer la collection

Si on ignore de mentionner la collection, comme par exemple: <%= Request("villes") %>alors là VBScript va chercher dans chacune des collections: QueryString, Form, Cookies, ServerVariables dans cet ordre jusqu'à ce qu'il trouve

s'il ne trouve pas, il retourne la chaîne vide

Exercice 1: calcul de taxes

faire un formulaire pour le calcul de taxes avec le champ soustotal

sauver ce formulaire dans taxes.htm vous devez lire les données du

QueryString l'action dans taxes.htm doit être mise à

taxes.asp

Variables d'environnement

Voici quelques variables d'environnement importantes SERVER_NAME: donne l'adresse IP ou le nom de

l'hôte du réseau sur lequel le script s'exécute. SERVER_PORT: donne le port sur lequel le script

roule. REQUEST_METHOD: donne la méthode selon laquelle

un formulaire à été soumis (POST ou GET) PATH_INFO: information sur le chemin (path); Elle est

envoyée par le fureteur qui utilise la méthode Get. PATH_TRANSLATED: complète l'information de la

variable PATH_INFO, en spécifiant le chemin complet à partir du répertoire principal

Le vecteur ServerVariables

les variables d'environnement se retrouvent dans ServerVariables

par exemple, si on voulait toutes les afficher:<%For each variable In Request.ServerVariables%>

<%= variable %>: <%= Request.ServerVariables(variable) %><br>

<% Next %>

Anatomie d'un script

un script doit satisfaire deux règles de base: il écrit vers la sortie standard il indique au serveur, à l'aide d'en-têtes (headers), la façon

qu'il doit traiter l'information qu'il reçoit du script

Anatomie d'un script

il y a trois sortes d'entêtes: Content-type: dit au fureteur comment traiter l'information,

qu'il recevra du script. Location: permet au script d'ouvrir un autre document sur le

serveur (redirection), comme s'il avait été appelé par le fureteur.

Status: est utilisé pour envoyer un code d'état spécial au fureteur.

chaque entête doit être suivie d'une ligne blanche après les entêtes il y a les données (HTML, image, ...)

L'objet Response

L'objet Response contient une série de méthodes, en voici la liste

AddHeader(): pour pouvoir ajouter des éléments dans l'en-tête

AppendToLog(): permet d'ajouter une chaîne d'au plus 80 caractères au fichier journal

L'objet Response

BinaryWrite(): permet d'envoyer de l'information non filtrée (utile lorsqu'on renvoie une image)

Clear(): aura pour effet d'effacer le contenu sur l'afficheur du client

L'objet Response

End(): termine la connexion avec le client Flush(): vide le tampon de sortie (utile

lorsque la propriété Buffer est à true) Redirect(): fait une redirection. Par

exemple: Response.Redirect "http://www.yahoo.com/"

Write(): envoie une chaîne de caractères au client

L'objet Response

L'objet Response contient une série de propriétés, en voici la liste

Buffer: booléen. permet d'accumuler la sortie avant de l'envoyer et pendant ce temps d'envoyer des champs pour l'en-tête

L'objet Response

ContentType: permet de spécifier le genre de données qui suit. Des exemples: text/plain, text/html (le plus souvent), image/gif, image/jpeg, application/ms-excel, etc...

CacheControl: Public ou Private (contrôler le caching par les serveurs proxy)

Cookies: pour conserver l'état. Nous verrons plus tard.

L'objet Response

Expires: dit quand une page doit être rafraîchie. Par défaut c'est 0. Argument accepté: nombre de minutes.

ExpiresAbsolute: dit quand une page doit être rafraîchie. Argument accepté: une date complète. Exemple: Response.ExpiresAbsolute = #December 21, 2001 1:00:00 AM#

L'objet Response

Status: force le serveur à renvoyer un statut de réponse. Un exemple:

<% Response.Status = "401 Unauthorized " %>aura pour effet de faire apparaître une boîte de dialogue sur le client pour obtenir les données pour l'authentification.

Session et application

deux objets nous permettent de conserver l'état: ce sont les objets

Session (pour chaque session) Application (à la première session d'un

script dans un répertoire donné)

on peut initialiser dans un fichier appelé GLOBAL.ASA

Session et application

les méthodes et propriétés: Abandon: méthode pour la session Timeout: propriété pour la session (défaut à 20

minutes) SessionID: propriété pour la session OnStart: événement pour la session ou l'application OnEnd: événement pour la session ou l'application Lock et Unlock: pour l'application Exemple: session("nomusager") =

Request.QueryString("nomusager")

Exemple de GLOBAL.ASA<SCRIPT RUNAT=server LANGUAGE="VBS">SUB Application_OnStart

Application("nvisiteurs") = 0END SUB</SCRIPT><SCRIPT RUNAT=server LANGUAGE="VBS">SUB Session_OnStart

Application.LockApplication("nvisiteurs") = Application("nvisiteurs") + 1 Application.Unlock

END SUB</SCRIPT><SCRIPT RUNAT=server LANGUAGE="VBS">SUB Session_OnEndApplication.LockApplication("nvisiteurs") = Application("nvisiteurs") – 1Application.UnlockEND SUB</SCRIPT>

Exemple de GLOBAL.ASA

Dans une page donnée, nous mettrions:

Bienvenue sur notre site, il y a présentement<% =Application("nvisiteurs") %> visiteurs sur

le site.

De la même façon on pourrait aussi afficher des variables spécifiques à la session

Objet Server

Une seule propriété; ScriptTimeout qui par défaut est à 90 secondes

méthodes: CreateObject(): utilisée lors de la création d'un objet

ActiveX (beaucoup d'exemples dans les pages qui suivent) HTMLEncode(): pour encoder les caractères de contrôle

pour le HTML (p.e. <, >, &, ").

HTMLEncode("<")

donnera

&lt;

Quand utiliser ça? Lorsqu'on doit afficher à l'écran le résultat issu d'un formulaire...

Objet Server

MapPath: convertir un URL local au serveur en chemin physique sur le système de fichiers. Par exemple, si la racine d'un Web est dans c:\inetpub\wwwroot\ alors

MapPath("/asp/bar.htm")sera

c:\inetpub\wwwroot\asp\bar.htmindépendamment de l'existence ou non du fichier en question...

Objet Server

URLEncode(): pour encoder une chaîne et la rendre appropriée pour un URL. Utilisé pour les données encodées dans un URL par la méthode GET, celles envoyées par POST ou pour les cookies.

URLencode("Éric L'Hermite")donnera

%C9ric+L%27Hermite