Upload
dorothee-ferrier
View
105
Download
0
Embed Size (px)
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
<
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