• Aucun résultat trouvé

[PDF] Cours complet sur ASP.Net pour aller plus loin | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Cours complet sur ASP.Net pour aller plus loin | Cours informatique"

Copied!
41
0
0

Texte intégral

(1)3 Applications et sessions ASP Nous avons vu, dans le chapitre précédent, les moyens mis en œuvre dans ASP pour accéder à une requête client et générer une réponse appropriée. Nous allons poursuivre notre étude en examinant d’autres objets caractéristiques d’ASP : Application et Session. Leur domaine d’utilisation ne concerne pas directement les requêtes et les réponses, mais la gestion de l’environnement d’exécution des pages ASP. Lors de la création de sites ou d’applications web, nous risquons de rencontrer des difficultés telles que l’absence de connexion lors de l’utilisation du protocole HTTP. La notion de connexion permet d’associer les valeurs des variables, des objets et d’autres ressources à un utilisateur spécifique, en rendant ces données accessibles à toutes les routines de nos applications. Cela semble logique quand on a affaire à des applications client ordinaires écrites en Visual Basic ou en C++. Cette fonctionnalité, malheureusement, n’est pas prise en charge par le Web. Dans ce chapitre, nous allons tenter de comprendre pourquoi et d’y remédier. Le domaine que nous abordons présente également des difficultés d’ordre terminologique et technologique. Depuis le début de cet ouvrage, nous parlons d’« applications web », sans les avoir jamais définies. De même, le terme de « session utilisateur », employé à plusieurs reprises, n’a eu droit à aucune description circonstanciée. Rassurez-vous, il s’agissait là d’omissions parfaitement volontaires : ces notions sont intimement liées aux concepts d’applications et de sessions ASP qui, vous vous en doutez, ont sûrement quelque chose à voir avec les objets Application et Session. Ce chapitre aborde les points suivants :. ➢ Applications web et leur relation à l’objet Application d’ASP. ➢ Sessions utilisateur et leur relation à l’objet Session d’ASP. ➢ Création et gestion automatique, par ASP, des applications et des sessions. ➢ Fonctionnalités des objets Application et Session. ➢ Mise en œuvre des objets Application et Session dans nos pages ASP. Auparavant, nous tenterons d’élucider l’épineuse question de la connexion, qui est au cœur du problème..

(2) ASP 3.0 Professionnel. Gestion de la connexion sur le Web Le concept de connexion n’a jamais vraiment été prioritaire aux yeux de nombreux développeurs, jusqu’au jour où ils ont commencé à transférer leurs applications sur le Web. Ce réseau, nous l’avons dit, est un environnement non connecté. Essayons de définir ce que cela implique, afin d’éviter les problèmes qui en découlent.. Définition de la connexion Dans le cas d’un programme normal mono-utilisateur, tel qu’une application exécutable créée sous forme de fichier.exe dans Visual Basic, aucun souci : chaque fois qu’une variable globale (ou publique) est déclarée, nous pouvons y accéder n’importe où dans le code. Tant que l’application fonctionne, la valeur demeure valide et accessible. Passons maintenant à une architecture client-serveur conventionnelle, où l’application client accède au moteur de base de données hébergé sur le serveur. Ici, chaque client établit une connexion au serveur et à l’application de base de données, au moyen de l’authentification de l’utilisateur. Remarque : En règle générale, l’authentification des utilisateurs implique qu’ils doivent indiquer leur nom et leur mot de passe pour décliner leur identité. Une fois que l’authentification a abouti, une connexion est établie entre le client et l’application serveur, et demeure active tant que l’utilisateur se sert de l’application. Ce scénario se produit, par exemple, lorsque vous vous connectez à votre serveur Windows 2000 local. À tout moment, l’administrateur peut visualiser les connexions utilisateur actives, avec l’utilitaire de gestion des utilisateurs et des ordinateurs d’Active Directory (il suffit pour cela de cliquer sur le menu Démarrer et sur Gestion d’annuaire, dans Outils d’administration). Le principe est sensiblement le même avec, par exemple, Microsoft SQL Server. Puisque la connexion est permanente, chaque utilisateur est aisément identifiable lorsqu’il adresse des instructions ou des requêtes au serveur. Pour la même raison, une réponse, ou toute autre information, peut être envoyée à l’utilisateur à n’importe quel moment. L’avantage essentiel est que le serveur peut stocker des valeurs et des informations sur chaque client avec une grande facilité, en les associant au client correspondant. De plus, l’application serveur peut héberger des variables globales accessibles à n’importe quel utilisateur, sans restriction. L’identification de chaque requête client et le stockage en mémoire des valeurs propres à un utilisateur engendrent la notion de connexion. Il s’agit de la représentation des valeurs et du contexte des variables intrinsèques de l’application et de l’utilisateur, pendant toute la durée de vie d’une application ou d’une connexion utilisateur.. 106.

(3) Chapitre 3 - Applications et sessions ASP. Importance de la connexion Supposons que nous voulions créer une application web impliquant une interaction avec des utilisateurs (et non un simple site web affichant des pages individuelles). Cette application doit pouvoir fournir un état différent pour chaque utilisateur, qu’il s’agisse d’une simple reconnaissance d’identité ou d’un stockage plus complexe de références à des objets ou de jeux d’enregistrements. À défaut, autant abandonner tout de suite l’idée de travailler avec plusieurs pages ASP. En effet, toutes les variables et références d’une page seront détruites sitôt l’exécution de celle-ci terminée. Quand l’utilisateur appelle la page suivante, toutes les informations qu’il a saisies se volatilisent. De toute évidence, il nous faut prévoir la persistance de la connexion pour chacun de nos visiteurs. De même, il serait intéressant de stocker les valeurs applicables globalement à l’ensemble des utilisateurs. Exemple type : un mécanisme web qui comptabilise le nombre de visites ou d’accès aux pages. À ce sujet, la présence d’un compteur par utilisateur n’offre guère d’intérêt, puisque c’est généralement le nombre total de connexions au site qui nous intéresse, et non celui de visites qu’un utilisateur effectue. Le nombre de visiteurs doit donc être consigné au niveau application, et non au niveau utilisateur. Ce problème n’est pas récent, puisqu’il est apparu en même temps que les premiers sites commerciaux hébergés sur le Web, voire avant ceux-ci. Plusieurs méthodes traditionnelles permettent donc d’enregistrer la connexion sur le Web. Ce que veulent connaître les webmestres, ce sont des données telles que le nombre et la fréquence des visites que vous rendez sur leur site, ou encore la liste des autres sites que vous fréquentez régulièrement. Leur but, c’est d’exploiter ces informations pour mieux « cibler » leurs messages publicitaires. Cette tâche nécessite le stockage d’informations utilisateur entre les requêtes de page effectuées au cours d’une visite, puis entre les visites.. Gestion de la connexion sur le Web L’une des méthodes les plus courantes consiste à recourir aux cookies. Le chapitre précédent a montré que les cookies permettent de stocker, côté client, des valeurs envoyées parallèlement à chaque requête de page au domaine où ils sont valides. En effectuant l’examen et la mise à jour des cookies sous ASP, nous pouvons, dans une certaine mesure, obtenir la persistance de la connexion. Les informations que renferment les cookies servent alors à identifier l’utilisateur, puis à l’associer à un groupe de valeurs emmagasinées. En analysant la requête de l’utilisateur, nous pouvons y détecter la présence éventuelle d’un cookie spécifique à notre site. En cas de recherche infructueuse, nous attribuons à l’utilisateur un identificateur, par exemple un numéro, que nous stockons dans le cookie en spécifiant une valeur Expires de longue durée. À chaque nouvelle visite de l’utilisateur, le cookie est détecté, les informations qu’il contient sont mises à jour et nous en profitons pour récupérer sur notre serveur toutes les données relatives au nombre et à la durée des visites, pour des besoins ultérieurs. Que se passe-t-il, dans ce cas, si l’utilisateur change de machine, supprime le cookie, ou si son navigateur refuse celui que nous lui envoyons ? Malheureusement, aucun moyen ne permet de conserver la connexion, car il sera impossible de l’identifier la fois suivante. Cela dit, le nombre de cookies qui gravitent aujourd’hui sur le Net est incalculable, et la plupart des gens les acceptent sur leur ordinateur sans s’en préoccuper outre mesure. Pour vous en convaincre, faites un test en activant l’option d’avertissement avant l’arrivée des cookies, puis allez surfer sur quelques sites très connus.. 107.

(4) ASP 3.0 Professionnel. Visiteurs anonymes et authentifiés Si la solution des cookies nous apparaît, à la réflexion, trop aléatoire, d’autres méthodes plus directes s’offrent à nous. La plus évidente, mise en œuvre sur de nombreux sites, consiste à ouvrir une boîte de dialogue de connexion, soit lors de votre première connexion au site, soit lorsque vous tentez d’accéder à une page où une authentification est requise. Votre première obligation est de vous inscrire, afin d’obtenir une combinaison nom d’utilisateur-mot de passe, qui vous donnera accès aux pages appropriées. Dès lors, vous êtes authentifié en tant qu’utilisateur connu et autorisé sur le site. Un cookie peut alors être placé sur votre système pour y conserver les références de la connexion ou une simple « clé » attestant que vous avez été authentifié. Entre-temps, les informations vous concernant peuvent être stockées de façon permanente sur le serveur, afin que vous puissiez retourner à tout moment sur le site. Tant que le cookie demeure dans votre navigateur, vous pouvez consulter librement le site, puisque vous êtes authentifié. Si aucune date d’expiration n’est fixée dans le cookie, celui-ci disparaît dès la fermeture de votre navigateur. Vous devez alors vous authentifier de nouveau à chaque nouvelle visite. De même, si vous refusez ou supprimez le cookie, la fenêtre de connexion réapparaît. Ainsi, vous ne pouvez accéder au site sans être identifié. Par conséquent, toutes les données de votre profil d’utilisateur peuvent être détectées et consignées, afin que les services de marketing et de comptabilité puissent s’en servir. Remarque : Associé aux fonctions de sécurité intégrales de Windows 2000, Internet Information Server permet de renforcer la sécurisation, en contraignant les utilisateurs à se connecter au serveur web comme s’ils accédaient à leur propre réseau. Ce procédé reste toutefois réservé aux navigateurs Internet Explorer 3 et supérieurs. IIS peut également faire appel à une authentification BASIC, qui permet au serveur web d’établir des connexions à des navigateurs autres que ceux de Microsoft.. Plus jamais de visiteurs anonymes Lorsque ASP est utilisé sur notre serveur web IIS, un mécanisme automatique nous permet d’assurer le suivi des utilisateurs pendant la session en cours (c’est-à-dire jusqu’à ce qu’ils se connectent à un autre site, ou referment leur navigateur). Nous verrons plus loin comment exploiter cette fonction pour identifier les visiteurs et pour stocker localement les informations de connexion nécessaires. Pour l’instant, comparons brièvement ce système aux solutions que nous connaissons. L’utilisation conjuguée d’ASP et d’IIS introduit la notion de session utilisateur, avec laquelle nous communiquons à l’aide de l’objet Session d’ASP. Chaque fois qu’un nouveau visiteur accède à une page ASP de notre serveur, un objet Session distinct est créé. Un identificateur numérique est affecté à la session en cours, et une version encodée est envoyée au client dans un cookie. Le chemin d’accès (path) au cookie (voir la description des propriétés de cookies au chapitre précédent) est celui du répertoire racine de l’application ASP exécutée sur notre serveur. Il s’agit généralement du répertoire racine du site web par défaut, « / », mais nous verrons que d’autres valeurs sont possibles. Aucun paramètre Expires n’étant indiqué dans le cookie, ce dernier est détruit à la fermeture du navigateur.. 108.

(5) Chapitre 3 - Applications et sessions ASP Chaque fois que l’utilisateur accède à une page ASP, le système recherche le cookie portant le nom ASPSESSIONIDxxxxxxxx, où x désigne une lettre de l’alphabet. Observez à nouveau les écrans de la collection ServerVariables (voir chapitre 2). Le nom de cookie ASP apparaît dans les en-têtes HTTP, comme dans la chaîne suivante mise en surbrillance :. Toutefois, ce cookie n’apparaît pas dans les collections Request.Cookies et Response.Cookies (ASP nous le cache). Cependant, il demeure sur le navigateur et continue d’être recherché par ASP à chaque requête de page. La valeur qu’il contient identifie la session valide pour l’utilisateur concerné. Il est donc possible d’extraire une référence à l’objet Session approprié (toujours en mémoire et contenant les valeurs générées lors de précédentes requêtes) et de la transmettre au script de la page ASP. Bien entendu, si le navigateur du client n’accepte pas ou ne prend pas en charge les cookies, le processus échoue. Dans pareil cas, aucune session ASP ne peut être créée et le maintien automatique de la connexion est impossible pour le visiteur concerné.. Définition d’une application web Dans les chapitres précédents, nous avons parlé d’application web dans un sens plutôt large, pour décrire ce qui ne correspond pas exactement à un site web, mais ne désigne pas non plus une « application » au sens conventionnel du terme. Autrement dit, l’application web telle que nous l’entendions est un ensemble de pages web et d’autres ressources, conçu pour réaliser un certain type de tâches, en vue de produire un résultat. Cette définition implique l’existence d’un parcours prédéfini dans les pages, suivant lequel l’utilisateur prend des décisions ou fournit des informations nécessaires à l’accomplissement de cette tâche. Par exemple, considérons une boutique en ligne : un processus itératif vous permet de voir et de sélectionner les produits à acheter, puis une série de pages indique les données de facturation et de livraison de la commande. Il peut encore s’agir d’un assistant de mise à jour de logiciel, qui vous guide dans le téléchargement et l’installation d’un nouveau composant, ou d’une application d’intranet indiquant des cotations ou le chiffre d’affaires.. 109.

(6) ASP 3.0 Professionnel Toutes ces notions s’opposent à celle d’un site web « normal », où une série de menus et de barres de navigation permet de parcourir le site de façon aléatoire. Toutefois, la différence entre un site web et une application web ne se réduit pas à la seule possibilité de navigation contrôlée. Les deux critères habituellement valables pour la navigation sur un site web (absence de connexion et anonymat) ne le sont généralement pas pour une application web.. Définition d’une application ASP Bien que le paragraphe qui précède définisse raisonnablement le terme générique d’ « application web », il ne désigne pas exactement la notion d’applications ASP. La définition d’une application web appelle une réponse subjective, par opposition à la notion d’application ASP, qui nécessite davantage une explication technique. Le mot « application » revêt dans ASP une signification propre à cette technologie, et ce concept doit vous être totalement familier si vous souhaitez envisager sa mise en œuvre pratique. Les applications ASP supposent principalement :. ➢ La définition d’une portée globale, grâce à une zone de stockage de variables accessibles globalement.. ➢ L’intégration à IIS par COM+, qui optimise la gestion des composants. Nous allons étudier ces thèmes dans la suite du chapitre. Le second met en scène d’autres objets ASP que nous n’avons pas encore détaillés. Notre approche restera donc assez générale. Nous approfondirons ces domaines dans le prochain chapitre, consacré à l’objet Server d’ASP.. Portée globale d’une application web ASP fournit l’objet Application, à peu près équivalent à l’objet Session, mais au niveau application et non au niveau utilisateur. En d’autres termes, cet objet ne s’adresse pas à un utilisateur individuel, mais à tous les utilisateurs de l’application : sa portée n’est donc pas limitée à un accès par un utilisateur unique. On se rapproche ici de la notion de variable globale ou publique, dans le cadre d’une application exécutable compilée. L’objet Application peut emmagasiner des variables et des informations (telles que la connexion) dans un contexte global, l’accès aux valeurs pouvant dépendre d’un script exécuté dans n’importe quelle page ASP de l’application, quel que soit le visiteur qui en formule la demande. Certes, nous n’avons toujours pas défini une application ASP. Pour ce faire, nous devons examiner le fonctionnement interne d’ASP. Lorsqu’un utilisateur appelle une page ASP, IIS crée un contexte (voir le chapitre 1) en instanciant la bibliothèque asp.dll qui met en œuvre ASP. La page est analysée pour un script côté serveur, les instances des moteurs de script appropriés étant définies en vue de l’exécution de ce script. L’événement initial de l’instanciation d’asp.dll lance une application ASP, d’où naît un objet Application. Ensuite, une session associée à l’utilisateur en cours démarre, et un objet Session individuel est créé. L’objet Application unique reste valide dans la portée (c’est-à-dire instancié et disponible) à. 110.

(7) Chapitre 3 - Applications et sessions ASP mesure que d’autres sessions sont lancées. Une fois que la dernière session encore active prend fin, l’application se termine et l’objet Application est détruit. Ainsi, tant que plusieurs visiteurs sont présents simultanément sur le site où la session est active, un seul objet Application est accessible à tous.. L’application ASP par défaut Au moment où IIS et ASP sont installés sous Windows 2000, un site web par défaut est créé. Sa configuration est celle d’une application ASP. Divers paramètres doivent donc être définis dans la boîte de dialogue Propriétés associée au répertoire racine du site (par défaut, C:\InetPub\WWWRoot) :. Parmi les éléments liés aux applications ASP, le fichier global.asa a pour rôle de définir avec précision le fonctionnement de celles-ci. Placé dans le répertoire racine de l’application, il s’applique à tous les sous-répertoires qui y sont rattachés. Lorsqu’il figure sous la racine du site web, il spécifie le site comme faisant partie de l’application ASP par défaut. Nous examinerons un échantillon de ce fichier et la manière de l’exploiter, dans la dernière partie de ce chapitre, consacrée aux événements Application et Session. Pour l’instant, tout ce que vous devez savoir, c’est que ce fichier existe.. Applications ASP virtuelles À l’instar de l’application par défaut créée lors de l’installation, nous pouvons définir notre propre application virtuelle ASP dans n’importe quel sous-répertoire du site web. Cette dernière regroupe également l’ensemble des sous-répertoires du « répertoire d’applications » spécifié. Toutefois, ce répertoire et ses branches secondaires font également partie de l’application par défaut et partagent l’espace global créé par l’objet Application par défaut.. 111.

(8) ASP 3.0 Professionnel Dans la pratique, les variables stockées dans l’application par défaut sont donc également disponibles au sein de l’application d’un sous-répertoire. Néanmoins, si une page ASP d’une application située dans le sous-répertoire écrit une valeur dans l’objet Application qui lui est propre, qui porte le nom d’une application se trouvant dans l’application (racine) par défaut, la valeur initiale n’est plus disponible dans l’application du sous-répertoire. En revanche, la valeur initiale est conservée dans les autres applications ou pages ASP, puisque l’application racine n’a pas accès aux variables de l’application du sous-répertoire. Pour vous aider, imaginez la situation en termes de variables d’une sous-routine ou d’une fonction. Si nous définissons une variable intMaValeur ayant le caractère Public ou global, nous pouvons y accéder depuis n’importe quelle sous-routine ou fonction. Toutefois, si nous déclarons ensuite une variable locale portant le même nom, les références contenues dans la sous-routine ou la fonction renverront à la copie locale. L’accès à la valeur initiale est alors impossible. Lorsque la sous-routine ou la fonction prend fin, la copie locale est supprimée, mais non la valeur initiale de la variable globale : Public intMaValeur = 42 Function FaireQuelquechose () Response.Write intMaValeur. Dim intMaValeur intMaValeur = 17 Response.Write intMaValeur. 'Le résultat obtenu à partir de la variable globale est 42. ' Le résultat obtenu à partir de la nouvelle variable locale est 17, mais 'la valeur globale de MaValeur est toujours égale à 42. End Function. Création d’applications ASP virtuelles Pour créer une application virtuelle, vous pouvez faire appel au Gestionnaire des services Internet, ou aux pages de gestionnaire web HTML équivalentes. Remarque : Pour convertir un répertoire en une application du même nom, il suffit de sélectionner son répertoire parent et de lui attribuer le nom indiqué dans la page Alias du répertoire virtuel de l’assistant. Par exemple, pour convertir le répertoire test en application virtuelle, sélectionnez l’entrée Site web par défaut, dans le Gestionnaire des services Internet, et indiquez le nom d’alias « test ».. 112.

(9) Chapitre 3 - Applications et sessions ASP. Dans le Gestionnaire des services Internet, cliquez avec le bouton droit sur le répertoire de création de la nouvelle application virtuelle. Sélectionnez Nouveau, puis Répertoire virtuel :. L’Assistant Création de répertoire virtuel s’ouvre, avec une fenêtre d’accueil décrivant les opérations exécutées. Cliquez sur Suivant. Dans la deuxième page, tapez le nom (ou l’alias) de la nouvelle application virtuelle. Cet intitulé, une fois combiné au chemin d’accès du répertoire sélectionné dans le Gestionnaire des services Internet, va devenir l’URL de l’application :. Cliquez sur Suivant et spécifiez le chemin d’accès des pages de l’application. Cliquez sur Parcourir pour sélectionner un répertoire, auquel va renvoyer la nouvelle application virtuelle :. 113.

(10) ASP 3.0 Professionnel. Cliquez sur Suivant pour ouvrir la page Autorisations d’accès ; sélectionnez les autorisations accordées à l’ensemble des utilisateurs de l’application. Les valeurs par défaut (Lecture et Exécuter les scripts) conviennent dans la plupart des cas :. Remarque : Ne cochez l’option Exécuter que si vous souhaitez écrire des applications CGI compilées, exécutées directement par l’utilisateur (par exemple, fichier .exe que l’utilisateur lance en tapant son nom dans l’URL de la requête : http://monsite.com/.../ApplicationTest/creer_utilisateur.exe?utilisateur= JDupont.. Cliquez sur Suivant. L’assistant crée l’application virtuelle, comme dans la fenêtre ci-contre (icône symbolisant une boîte ouverte dans la sous-fenêtre de gauche) :. 114.

(11) Chapitre 3 - Applications et sessions ASP. Cliquez avec le bouton droit de la souris sur la nouvelle application et sélectionnez Propriétés. Les paramètres sélectionnés par l’assistant s’affichent. Vous avez la possibilité de modifier le chemin d’accès local, les permissions d’accès et le nom de l’application. Par ailleurs, le bouton Supprimer vous permet d’effacer l’application virtuelle :. Suppression d’applications virtuelles Un clic sur le bouton Supprimer n’efface pas l’entrée du Gestionnaire des services Internet. Il se limite à convertir l’application virtuelle en répertoire virtuel. Celui-ci apparaît sous forme d’une icône de dossier surmontée d’un point bleu, indiquant qu’il s’agit non pas d’un répertoire réel du site web, mais d’une redirection vers un autre dossier du disque. Ce répertoire est accessible de la même manière que l’application virtuelle dont il est issu (c’est-à-dire par la même URL), mais il ne fonctionne pas comme une application. En effet, au lieu de prendre en charge son objet Application, il hérite de celui du site web par défaut, ou d’une autre application située dans les répertoires parents. Pour supprimer une application virtuelle, cliquez dessus avec le bouton droit de la souris dans le Gestionnaire des services Internet et sélectionnez Supprimer.. Nature des données stockées dans un objet Application L’espace de stockage global fourni par l’objet Application d’ASP peut contenir :. ➢ Des variables simples, de type chaîne ou numérique, (stockées en tant que variants, comme les variables de script ASP).. ➢ Des tableaux de variants à une ou plusieurs dimensions. ➢ Des références de variables (variants) désignant une instance d’objet COM.. Définition des variants Variant est le seul type de variable proposé par le moteur de script VBScript pour les besoins d’ASP (et d’Internet Explorer). Il correspond au type Variant de Visual Basic et de Visual Basic for Applications (VBA). Bien que les variants soient peu performants en matière de gestion de mémoire lors du stockage de variables et qu’ils mobilisent plus de ressources que les types de base plus courants, comme String ou Integer, ils n’en offrent pas moins de nombreux avantages.. 115.

(12) ASP 3.0 Professionnel Vu de l’intérieur, le variant stocke les valeurs sous forme de types individuels. Une conversion implicite du type a lieu automatiquement, en vue de l’utilisation du code suivant : chChaine = "30" entEntier = 12 Response.Write chChaine & entEntier Response.Write chChaine + entEntier. 'Écrit 3012 dans la page résultante 'Écrit 42 dans la page résultante. La conversion implicite du type de données permet d’ignorer le format chaîne de la valeur des zones de texte et de liste HTML, et de les traiter si nécessaire comme des nombres (sous réserve que ce nombre soit valide). De même, la méthode Len de VBScript peut vérifier la longueur d’une valeur inexistante dans Request.Form, sans générer d’erreur. La fonction Len sert à convertir en chaîne la valeur extraite d’un appel de Request.Form. Si la valeur est manquante, la fonction renvoie Empty, qui, une fois convertie en chaîne, produit le résultat "" (longueur nulle).. Types de données VBScript et conversions Des conversions de type sont également permises de manière explicite. Dans VBScript, la méthode VarType envoie un entier indiquant le type du variant : Select Case VarType(varMyValue) Case Case Case Case Case Case Case Case Case Case Case Case Case Case Case Case. 0 : Response.Write "Empty (uninitialized)" 1 : Response.Write "Null (no valid data)" 2 : Response.Write "Integer" 3 : Response.Write "Long integer" 4 : Response.Write "Single-precision floating-point number" 5 : Response.Write "Double-precision floating-point number" 6 : Response.Write "Currency" 7 : Response.Write "Date" 8 : Response.Write "String" 9 : Response.Write "Automation Object reference" 10 : Response.Write "Error" 11 : Response.Write "Boolean" 12 : Response.Write "Variant (used only with items in arrays of Variants)" 13 : Response.Write "Data-access object" 17 : Response.Write "Byte" 8192 : Response.Write "Variant Array". End Select. Des fonctions envoient parfois une valeur booléenne pour certains types : IsArray, IsDate, IsEmpty, IsNull, IsNumeric et IsObject. Une fois le type identifié, il est convertible dans un type Variant différent, si les données contenues le permettent. Ce principe améliore la clarté du code et permet de vérifier la validité des valeurs des variables. Toute tentative de conversion non autorisée provoque une erreur d’exécution :. 116.

(13) Chapitre 3 - Applications et sessions ASP. blnBoolean = CBool(varVariant) bytByte = CByte(varVariant) curCurrency = CCur(varVariant) dtmDate = CDate(varVariant) dblDouble = CDbl(varVariant) entEntier = CInt(varVariant) lngLong = CLng(varVariant) sngSingle = CSng(varVariant) chChaine = CStr(varVariant). 'Conversion en variant de type Boolean 'Conversion en variant de type Byte 'Conversion en variant de type Currency 'Conversion en variant de type Date 'Conversion en variant de type Double 'Conversion en variant de type Integer 'Conversion en variant de type Long 'Conversion en variant de type Single 'Conversion en variant de type String. Types de données JScript et conversions Dans JScript, les variables d’autres types semblent fonctionner comme dans VBScript, mais le concept de variant n’existe pas en tant qu’objet. Toutes les valeurs y sont considérées comme des objets, appartenant à l’un des six types de données suivants :. ➢ Undefined : sert à indiquer que la variable n’a été ni déclarée, ni créée, et qu’aucune valeur, en cas de création implicite, ne lui a été attribuée. Équivaut au type Empty de VBScript.. ➢ ➢ ➢ ➢. Null : la variable ne contient aucune valeur acceptée. Equivaut au type Nothing de VBScript. Boolean String Number. ➢ Object En outre, JScript contient la fonction typeof, qui envoie le type de données sous forme de chaîne : chChaine = '30'; entEntier = 12; Response.Write(typeof(chChaine)); Response.Write(typeof(entEntier));. // Écrit « string » dans la page résultante // Écrit « number » dans la page résultante. Chaque type de données contient également la méthode toString, qui envoie la valeur de la variable convertie en chaîne, et la méthode valueOf, qui l’envoie dans son type initial.. Problèmes de concaténation et d’addition dans JScript JScript diffère de VBScript à bien des égards, et pas seulement par l’absence d’opérateur de concaténation « & ». Lorsque l’opérateur d’addition est utilisé, il compare les types de données des variables, avant d’entreprendre la moindre action. S’il s’agit de deux valeurs numériques, elles sont additionnées. Si au moins l’une des variables est une chaîne, elles sont concaténées : chChaine = '30'; entEntier = 12; Response.Write(entEntier + entEntier); Response.Write(chChaine + entEntier); Response.Write(entEntier + chChaine);. // Écrit 24 dans la page résultante // Écrit 3012 dans la page résultante // Écrit 1230 dans la page résultante. 117.

(14) ASP 3.0 Professionnel Si l’ajout concerne plus de deux valeurs, vous devez prendre en compte l’ordre d’exécution, comme dans ces quelques lignes : entEntier = 12; Response.Write(entEntier + entEntier + "<P>"); // Ici, le résultat est : 24<P> Response.Write("<P>" + entEntier + entEntier + "</P>"); // Là le résultat est : <P>1212</ P>. Dans le premier cas, les deux valeurs sont additionnées, puis le résultat est converti en chaîne et concaténé avec la balise <P>. Dans le deuxième cas, la première opération consiste à concaténer une chaîne et un nombre, de sorte que celui-ci soit converti en chaîne à ce stade. Les opérations suivantes sont des concaténations. Pour résoudre ce problème, nous pouvons, à l’aide de parenthèses, forcer la première opération à additionner les deux nombres : Response.Write("<P>" + (entEntier + entEntier) + "</P>"); // Le résultat est : <P>24</P>. Gestion des composants dans une application web Le deuxième aspect fondamental de l’utilisation d’applications virtuelles sous ASP est la possibilité d’améliorer la gestion des composants instanciés et exécutés dans le code du script. Nous détaillerons cette technique et ses avantages lorsque nous aborderons la section consacrée aux composants ASP. Nous nous contenterons ici de passer en revue l’effet des paramètres de l’application virtuelle (définis dans la boîte de dialogue Propriétés du gestionnaire de services Internet) sur l’emploi des composants dans les pages ASP de l’application. Le bas de la page Répertoire de base, dans la boîte de dialogue des propriétés de l’application virtuelle, comporte deux listes modifiables, Exécuter les autorisations et Protection d’application :. 118.

(15) Chapitre 3 - Applications et sessions ASP. Paramètres de protection et d’exécution de l’application Le chapitre suivant décrit la création d’instances de composants au sein d’une page web. Toutefois, il n’est pas inutile de mentionner ces options ici, car vous serez probablement amené à les définir au moment de créer l’application. Les options relatives aux autorisations d’exécution sont les suivantes : Autorisation d’exécution. Description. Aucune. Aucun script ni programme exécutable ne peut être lancé dans l’application virtuelle. Ce paramètre offre un moyen simple et rapide de désactiver une application.. Scripts seulement. Exécute uniquement les fichiers script (ASP, IDC, etc.) dans l’application virtuelle (fichiers exécutables exclus).. Scripts et Exécutables. Permet le lancement de tout fichier script ou exécutable dans l’application virtuelle.. Les autorisations d’exécution déterminent le mode d’exécution accepté dans l’application virtuelle. Parallèlement, les options de protection de l’application définissent le traitement des exécutables et des composants. Les options possibles ont déjà fait l’objet d’une description au chapitre 1, mais les voici à nouveau, pour rappel : Protection de l’application. Description. Basse (processus IIS). Lance les composants et les exécutables des applications virtuelles ASP dans le « processus » (l’espace mémoire) de l’exécutable du serveur web (Inetinfo.exe). D’où le risque qui pèse sur le serveur web en cas de dysfonctionnement d’un exécutable ou d’un composant. Toutefois, il s’agit de l’option d’exécution d’applications la plus rapide, et qui monopolise le moins de ressources.. Moyenne (En file d’attente). Valeur par défaut. Lance les composants et les exécutables des applications virtuelles ASP dans le « processus » (l’espace mémoire) d’une instance partagée de DLLHost.exe. L’exécutable du serveur web (Inetinfo.exe) est ainsi protégé contre le risque de dysfonction-nement d’un exécutable ou d’un composant. Toutefois, en cas de dysfonctionnement d’un seul exécutable ou d’un composant, le processus DLLHost.exe risque d’échouer, entraînant le dysfonctionnement de tous les autres.. 119.

(16) ASP 3.0 Professionnel (Suite du tableau) Protection de l’application. Description. Elevée (Isolé). Lance les composants et les exécutables des applications virtuelles ASP dans le « processus » (l’espace mémoire) d’une instance de DLLHost.exe. Toutefois, chaque application ASP possède son instance de DLLHost.exe. L’exécutable du serveur web (Inetinfo.exe) est ainsi protégé contre le risque de dysfonctionnement d’un exécutable ou d’un composant. Par ailleurs, l’intégrité de l’application virtuelle est garantie en cas de dysfonctionnement d’un exécutable ou d’un composant d’une autre application virtuelle. Microsoft conseille de ne pas héberger, dans un serveur web, plus de dix applications virtuelles isolées.. Microsoft recommande d’exécuter les applications critiques dans un processus dédié, défini par l’option Elevée (Isolé), le reste des applications étant hébergé au sein d’un processus commun partagé, option Moyenne (En file d’attente). Nous venons de faire un tour d’horizon des éléments intervenant dans les applications ASP. Nous allons à présent examiner les sessions ASP.. Définition des sessions ASP Les sessions ASP représentent le degré supérieur de modularité dans une application web. L’objet Application d’ASP sert à consigner l’état (variables simples, objets, tableaux, etc.) global et accessible à tous les utilisateurs qui « exécutent l’application ». Autrement dit, ces valeurs sont accessibles sans restriction au code ASP répondant aux requêtes utilisateur émises dans le cadre de l’application (à condition qu’une session valide ait été établie, comme nous allons le voir). Le plus souvent, toutefois, cette configuration est insuffisante. Nous devons être en mesure de stocker des valeurs propres à chaque visiteur, sans pour autant nous astreindre à y associer des noms. Il est inutile, par exemple, d’encombrer l’espace global de notre application en y insérant des valeurs comme : MikeJones003PrefFGColor = "bleu marine" MikeJones003PrefBGColor = "blanc" MikeJones003PrefLinkColor = "vert" PriscillaDelores001PrefFGColor = "rouge" PriscillaDelores001PrefBGColor = "vert foncé" ... etc.. Non seulement cette méthode pèse lourdement sur les ressources du système, mais exige des trésors d’imagination pour définir le code accédant à la valeur de chaque utilisateur. De surcroît, elle présente un autre inconvénient : l’application continue d’exister tant que des visiteurs sont présents sur le site. Autre-. 120.

(17) Chapitre 3 - Applications et sessions ASP ment dit, la zone de stockage global de l’application doit s’étendre indéfiniment, à moins de supprimer des valeurs lors du départ des visiteurs. Ce problème est donc assombri par toutes sortes de difficultés.. Définition d’une portée de niveau utilisateur dans une application web Au lieu de recourir à un stockage global, il est plus judicieux de réserver à chacun des visiteurs un espace privé pour le stockage des variables. Au demeurant, cet espace doit rester globalement accessible aux pages chargées par l’utilisateur concerné. Toutes les variables portant le même nom, la mise en œuvre du code ASP est considérablement simplifiée. Le même code fonctionne de façon transparente pour le visiteur, puisqu’il accède à la zone de stockage privée de celui-ci : PrefFGColor = "bleu marine" PrefBGColor = "blanc" PrefLinkColor = "vert". C’est à ce moment que l’objet Session intervient.. Nature des données stockées dans un objet Session La possibilité de stocker des valeurs accessibles globalement à un utilisateur spécifique, mais privées du point de vue du reste des utilisateurs, montre l’utilité des sessions ASP. Nous pouvons y stocker des valeurs de même type que dans l’objet Application :. ➢ Des variables simples, de type chaîne ou numérique (stockées en tant que variants, comme les variables de script ASP).. ➢ Des tableaux de variants à une ou plusieurs dimensions. ➢ Des références de variables (variants) désignant une instance d’objet COM.. Problèmes liés aux sessions Les sessions offrent donc un moyen fort intéressant de stocker des valeurs propres à chaque utilisateur, mais au prix de certaines restrictions, auxquelles vous devez rester attentif :. ➢ N’oubliez pas que certains navigateurs et serveurs web respectent la distinction majusculesminuscules dans les URL, chemins d’accès et noms de fichiers (par exemple, Navigator et des serveurs Unix ou Linux). Si vous insérez dans une page des liens hypertexte appelant une URL dont la combinaison majuscules-minuscules est différente, ces liens ne sont pas traités de la même manière dans ces navigateurs. De même, si cette combinaison est différente dans un chemin d’accès ou un nom de fichier, le navigateur considère qu’il s’agit d’un autre répertoire ou d’un autre fichier. Ce problème n’a aucune importance pour la localisation des ressources sur le serveur, puisque IIS ne fait pas la distinction majuscules-minuscules. IIS accepte donc toute combinaison majuscules-minuscules, et renvoie un fichier dont le nom contient les mêmes caractères. Par contre, il arrive que le chemin d’accès d’un cookie ne possède pas la même combinaison majuscules-minuscules que le chemin d’accès défini dans un hyperlien. Dans ce cas, il arrive que le navigateur ne renvoie pas le cookie avec la page appelée dans ce répertoire. En conséquence, aucune session utilisateur reposant sur ce cookie ne sera localisée, et l’objet Session ne sera pas inclus dans la portée (ou en d’autres termes, aucune valeur de l’objet ne sera disponible). Mieux vaut donc vous en tenir à des minuscules, ou à une combinaison majuscules-minuscules pertinente, lorsque vous définissez vos noms de répertoires et de pages.. 121.

(18) ASP 3.0 Professionnel. ➢ Les précédentes versions d’IIS et d’ASP souffraient également d’imperfections liées aux applications imbriquées. Dans certains cas, l’abandon, par un utilisateur, d’une application ASP virtuelle imbriquée, et le retour à l’application ASP par défaut, entraînaient la disparition des variables globales portant le même nom que les variables locales de l’application imbriquée. De plus, en cas de fermeture intentionnelle de la session par un appel de méthode Session.Abandon (voir plus loin), le code du fichier global.asa ne pouvait être exécuté. Ces divers défauts ont été corrigés dans ASP 3.0.. ➢ Souvenez-vous que les sessions reposent sur les cookies. S’ils sont désactivés ou non pris en charge par le navigateur d’un visiteur, celui-ci ne pourra démarrer aucune session et n’aura, par conséquent, accès à aucun objet Session.. Désactivation des sessions Bien que cet environnement idéal où la connexion est disponible à chaque instant ait tout l‘air d’un cadeau empoisonné, vous devez avoir en main tous les éléments dont vous avez besoin pour parvenir à vos fins. Le serveur est davantage mis à contribution que s’il se limite à envoyer des pages sans connexion. L’envoi et le décodage des cookies de session, ainsi que leur mise en correspondance avec les utilisateurs respectifs, exigent en effet de nombreux cycles de traitement. Si le maintien de la connexion n’est pas indispensable, mieux vaut désactiver les sessions pour éviter ce surcroît d’activité. Dans le cas d’un site web où l’on peut se dispenser d’assurer le suivi des visiteurs, ou de conserver les variables globales, vous pouvez désactiver le démarrage de session de deux manières : en définissant les propriétés correspondantes dans le Gestionnaire des services Internet, ou en ajoutant le code approprié dans les pages où la connexion n’est pas requise (voir plus loin). Pour désactiver les sessions sur l’ensemble du site web, vous pouvez éditer les paramètres de l’application de site web par défaut. Pour les désactiver dans une application spécifique, vous devez éditer les propriétés de l’application virtuelle concernée. Ouvrez la boîte de dialogue Propriétés de l’application, sélectionnez la page Répertoire de base et cliquez sur le bouton Configuration :. 122.

(19) Chapitre 3 - Applications et sessions ASP. La boîte de dialogue Configuration de l’application s’affiche. Cliquez sur l’onglet Options de l’application. Ici, les sessions peuvent être activées ou désactivées dans toute l’application (en l’occurence sur l’ensemble du site web par défaut). En outre, la valeur par défaut du délai d’expiration de session est modifiable. Dans la fenêtre ci-contre, il est fixé à 20 minutes, ce qui correspond à la valeur prédéfinie dans les versions précédentes d’ASP. Cette valeur peut être maintenue si nécessaire (la version 3.0 d’ASP prévoit désormais un délai par défaut de 10 minutes) : Pour désactiver les sessions d’une page, tout en autorisant leur création et leur utilisation dans d’autres pages de la même application, vous pouvez ajouter une entrée dans la directive de traitement d’ASP correspondant à la page. Elle vient alors compléter celle du langage par défaut (s’il est défini), ou peut être spécifiée seule : <%@LANGUAGE="VBScript" ENABLESESSIONSTATE="False"%>. Après avoir satisfait votre curiosité naturelle en découvrant les objets Application et Session d’ASP, vous allez pouvoir en examiner les détails.. Objets Application et Session d’ASP Les deux objets ASP dont nous parlons depuis le début de ce chapitre, Application et Session, nous donnent accès aux collections, aux méthodes, aux propriétés et aux événements mis à notre disposition par les applications et les sessions d’ASP. Dans la présente section, nous allons envisager ces deux objets du point de vue du programmeur.. ➢ L’objet Application est créé à l’instant où la DLL d’ASP est chargée, en réponse à la requête initiale de page ASP. Il met en place le référentiel nécessaire au stockage des variables et des références aux objets, qui seront accessibles à toutes les pages ouvertes par les visiteurs.. ➢ Un objet Session est créé pour chaque visiteur dès qu’une requête de page ASP a lieu sur le site. Il reste disponible jusqu’à l’expiration du délai par défaut (ou du délai déterminé par le script). Cet objet met en place le référentiel nécessaire au stockage des variables et des références aux objets, qui seront accessibles uniquement aux pages ouvertes par cet utilisateur pendant la durée de vie d’une session.. 123.

(20) ASP 3.0 Professionnel Le schéma suivant, repris du chapitre 1, indique la manière dont la requête de l’utilisateur et la réponse du serveur se situent dans la session ASP de cet utilisateur. En outre, ce schéma montre le positionnement des sessions au sein de l’application :. Objet Application Objet Session Requête de client. Objet Request Serveur. Réponse du serveur. Objet Response. Client. Objet Session Requête de client. Réponse du serveur. Objet Request. Objet Serveur. Objet Response. Client. Objet ASPError. Membres de l’objet Application d’ASP Vous trouverez dans la présente section la description des collections, des méthodes et des événements de l’objet Application (celui-ci ne comportant aucune propriété). Dans le chapitre suivant, nous ferons de même avec l’objet Session qui lui, contient des propriétés. Nous enchaînerons par un examen des tâches usuelles auxquelles ces objets s’appliquent, avant de conclure en décrivant l’emploi des membres de chaque objet.. 124.

(21) Chapitre 3 - Applications et sessions ASP. Collections L’objet Application contient deux collections, qui donnent accès aux variables et aux objets stockés dans l’espace global de l’application : Collection. Description. Contents. Contient les variables (et valeurs associées) stockées dans l’objet Application et définies autrement que par une balise <OBJECT>. Comprend des tableaux de variants et des références aux instances d’objet de type variant.. StaticObjects. Contient les variables stockées dans l’objet Application à l’aide d’une balise <OBJECT>.. Méthodes Ces méthodes permettent de supprimer les valeurs de l’espace global de l’application et de contrôler les accès simultanés aux variables dans cet espace : Méthode. Description. Contents.Remove ("nom_variable"). Supprime une variable nommée de la collection Application.Contents.. Contents.RemoveAll(). Supprime toutes les variables de la collection Application.Contents.. Lock(). Verrouille l’objet Application, de sorte que seule la page ASP en cours ait accès au contenu. Méthode utilisée pour garantir que les problèmes de simultanéité n’altèrent pas le contenu, si deux utilisateurs à la fois sont autorisés à lire et mettre à jour des valeurs.. Unlock(). Supprime le verrouillage de la page ASP concernée, apposé sur l’objet Application.. Remarque : Vous ne pouvez en aucun cas supprimer les variables de la collection Application.StaticObjects durant l’exécution.. 125.

(22) ASP 3.0 Professionnel. Événements L’objet Application contient deux événements, déclenchés à son démarrage et à son arrêt : Événement. Description. onStart. Déclenché au démarrage de l’application ASP, avant l’exécution de la page appelée par l’utilisateur et avant toute création d’objet Session. Sert à initialiser des variables, à créer des objets ou à exécuter un autre code.. onEnd. Déclenché lorsque l’application ASP prend fin, c’est-à-dire à la fin de la dernière session utilisateur et de l’exécution du code de l’événement onEnd correspondant à cette session. Les variables de l’application sont détruites lorsque cet événement prend fin.. Membres de l’objet Session d’ASP La présente section résume l’ensemble des membres de l’objet Session.. Collections L’objet Session contient deux collections permettant d’accéder aux variables et aux objets stockés dans l’espace de session local de l’utilisateur : Collection Contents. Description Contient les variables et valeurs associées, stockées dans l’objet Session particulier et définies autrement que par une balise <OBJECT>. Comprend des tableaux de variants et des références aux instances d’objet de type variant.. StaticObjects Contient les variables stockées dans l’objet Session à l’aide d’une balise <OBJECT>.. Propriétés Quatre propriétés sont disponibles pour l’objet Session : Propriété CodePage. 126. Description Lecture/écriture. Type Integer. Définit la page de code sélectionnée pour afficher le contenu des pages dans le navigateur. Il s’agit de la valeur numérique du jeu de caractères. Chaque langue et variante locale fait appel à une page de code distincte : la page de code ANSI 1252 définit l’anglais américain et la plupart des langues européennes, tandis que la page de code 932 sert à afficher le japonais Kanji..

(23) Chapitre 3 - Applications et sessions ASP (Suite du tableau) Propriété. Description. LCID. Lecture/écriture. Type Integer. Définit le paramètre LCID (identificateur de paramètres régionaux) de la page envoyée au navigateur. Le sigle normalisé LCID identifie la zone géographique de manière unique : 2057 indique par exemple la zone dont le symbole monétaire est « £ ». Ce paramètre peut également compléter des instructions telles que FormatCurrency, qui admettent un argument LCID facultatif. Le LCID d’une page peut être précisé à l’ouverture d’une directive de traitement ASP <%@..%>, où il remplace le paramètre de propriété LCID de la session. La liste des directives de traitement ASP figure dans la suite de ce chapitre.. SessionID. Lecture seule. Type Long. Renvoie l’identificateur de session généré par le serveur au moment de la création de celle-ci. Cette propriété reste unique pendant toute la durée de vie de l’objet Application parent et peut être réutilisée au démarrage d’une nouvelle application.. Timeout. Lecture/écriture. Type Integer. Détermine le délai d’expiration, en minutes, de l’objet Session concerné. Si l’utilisateur ne recharge ou n’appelle aucune page avant ce terme, la session se termine. Modifiable séparément, dans les pages individuelles. La valeur par défaut est de 10 minutes, mais des délais plus courts sont parfois préférables pour les sites où le trafic est dense.. Méthodes Les méthodes de l’objet Session permettent de supprimer des valeurs dans l’espace de session au niveau utilisateur et de mettre fin aux sessions à la demande : Méthode. Description. Contents.Remove ("nom_variable"). Supprime une variable nommée de la collection Session.Contents.. Contents.RemoveAll() Supprime toutes les variables de la collection Session.Contents. Abandon(). Met fin à la session utilisateur en cours et détruit l’objet Session, une fois l’exécution de la page terminée. Vous pouvez encore accéder aux variables de la session en cours après l’appel de la méthode Abandon, mais la page ASP suivante appelée par le même utilisateur déclenche le lancement d’une nouvelle session et la création, le cas échéant, d’un objet Session.. Remarque : Vous ne pouvez en aucun cas supprimer les variables de la collection Session.StaticObjects durant l’exécution.. 127.

(24) ASP 3.0 Professionnel. Événements L’objet Session contient deux événements, déclenchés au démarrage et à l’arrêt de l’objet : Événement. Description. OnStart. Déclenché au démarrage d’une session utilisateur ASP, avant l’exécution de la page appelée par l’utilisateur. Sert à initialiser des variables, à créer des objets ou à exécuter un autre code.. onEnd. Déclenché lorsque la session utilisateur ASP prend fin, c’est-à-dire à expiration du délai de session prédéfini, écoulé depuis la dernière requête de page lancée par l’utilisateur dans l’application. Les variables de la session sont détruites lorsque cet événement prend fin. Il peut également être mis fin explicitement aux sessions utilisateur ASP dans le code, par la méthode Abandon.. Utilisation des événements des objets Application et Session Les objets Application et Session d’ASP présentent une caractéristique unique parmi les objets d’ASP. Cette particularité, assez inattendue dans un environnement de script côté serveur, est l’existence d’événements. Toutefois, comme nous l’avons observé lors de la description des membres, il s’agit d’événements spécifiques, liés au fonctionnement des sessions et des applications ASP.. Gestionnaires d’événements des objets Application et Session ASP déclenche un événement chaque fois qu’une application ou une session commence ou se termine. La détection de ces événements et la réponse ad hoc peuvent être confiées à un script classique contenu dans le fichier spécial global.asa, dans le répertoire racine d’une application (soit : \InetPub\WWWRoot pour le site web par défaut, ou un dossier configuré en tant qu’application virtuelle). Ce fichier peut comporter une ou plusieurs balises HTML <OBJECT> destinées à créer les instances de composants utilisées au sein de cette application ou des sessions utilisateur. Nous détaillerons la création d’instances de composants au chapitre 4. Le code suivant est un échantillon de fichier global.asa, que nous reprendrons dans les exemples de pages de ce chapitre. Admettez pour l’instant comme postulat le code inséré entre les balises <OBJECT>, ainsi que les lignes commençant par le mot-clé Set : <!—Declaration de l’instance de composant ASPCounter avec portée d’application //--> <OBJECT ID="ASPCounter" RUNAT="Server" SCOPE="Application" PROGID="MSWC.Counters"> </OBJECT>. 128.

(25) Chapitre 3 - Applications et sessions ASP. <!-- Declaration de l’instance de composant ASPContentLink avec portée de session //--> <OBJECT ID="ASPContentLink" RUNAT="Server" SCOPE="Session" PROGID="MSWC.NextLink"> </OBJECT> <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_onStart(). 'Création d’une instance de Recordset ADO avec portée d’application Set Application("ADOConnection") _ = Server.CreateObject("ADODB.Connection") Dim varTableau(3) 'Crée un tableau de variants et le complète varTableau(0) = "Ceci est un" varTableau (1) = "tableau de variants " varTableau (2) = "stocké dans" varTableau (3) = "l’objet Application " Application("Tableau_Variant") = varTableau 'Le stocke dans l’application Application("Heure_départ") = CStr(Now) 'Stocke la date et l’heure au format chaîne Application("Compteur") = 0 'Réinitialise la variable du compteur End Sub Sub Application_onEnd() Set Application("ADOConnection") = Nothing End Sub Sub Session_onStart() 'Crée une instance de composant AdRotator avec portée de session Set Session("ASPAdRotator") = Server.CreateObject("MSWC.AdRotator") Dim varTableau(3) 'Crée un tableau de variants et le complète varTableau (0) = "Ceci est un" varTableau (1) = "tableau de variants" varTableau (2) = "stocké dans" varTableau (3) = "l’objet Session " Session("Tableau_Variant") = varTableau ' Stocke dans la session Session("Heure_départ") = CStr(Now) ‘Stocke la date et l’heure au format chaîne 'Le contenu des objets Request et Response est accessible dans le gestionnaire 'd’événements Session_onStart de la page qui est à l’origine de la session. C’est le *seul* 'endroit où le contexte de la page ASP est ainsi disponible. 'On peut extraire, par exemple, l’adresse IP de l’utilisateur : Session("Votre_addr_IP") = Request.ServerVariables("REMOTE_ADDR"). 129.

(26) ASP 3.0 Professionnel. Application.Lock intVisits = Application("Compteur") + 1 visites Application("Compteur ") = intVisits Application.Unlock l’application. 'Empêche les mises à jour simultanées 'Incrémente la variable du compteur de 'La stocke de nouveau dans l’application 'Désactive le verrouillage de. End Sub Sub Session_onEnd() Set Session("ASPAdRotator") = Nothing End Sub </SCRIPT>. Remarque : Comme ce script sert de fichier global.asa pour les exemples de ce chapitre, vous devez le placer dans le répertoire racine de votre site web, ou dans un répertoire désignant une application virtuelle, où se trouvent les autres fichiers d’exemple.. Lecture et stockage de valeurs L’exemple ci-dessus illustre la manière de lire et de stocker des variables dans les objets Application et Session, à l’image des collections des objets Request et Response (voir plus haut). Pour définir la valeur des variables : Application("nom_variable") = valeur_variable Application("nom_variable") = nom_variable_de_tableau_Variant Set Application("nom_variable") = référence_d’objet. Pour extraire les valeurs des variables : valeur_variable = Application("nom_variable") variable_de_tableau_Variant = Application("nom_variable") Set référence d’objet = Application("nom_variable"). Bien entendu, ces procédures sont également valables pour l’objet Session. La manière de verrouiller et déverrouiller l’objet Application à partir d’un gestionnaire d’événements Session apparaît clairement ici. La même procédure est requise si nous y accédons par une page ASP. En revanche, cette opération est inutile si l’accès aux valeurs de l’objet Application a lieu par le code des événements Application : en effet, il n’existe qu’une seule instance d’objet Application par application et le code présent entre ses gestionnaires d’événements n’est exécutable qu’en l’absence de toute session utilisateur active. En outre, vous découvrez une mise en œuvre élémentaire du compteur de sessions utilisateur. Le comptage fait appel à une variable au niveau application, nommée Visit_Count, qui est incrémentée d’une unité à chaque démarrage d’une nouvelle session.. 130.

(27) Chapitre 3 - Applications et sessions ASP Pour autant, notre action ne se borne pas à stocker de simples valeurs dans les objets Application ou Session. Sur le site développeur web de Wrox (http://webdev.wrox.co.uk), par exemple, se trouve le fichier global.asa inscrivant une entrée dans une base de données du serveur, à partir des données extraites de la collection Request.ServerVariables au lancement de chaque session. On dispose ainsi d’un moyen rudimentaire de dénombrer les visiteurs et de recueillir quelques données de base les concernant.. Création de tableaux de variants Il est un thème que nous n’avons pas encore abordé, mais dont l’intérêt technique a tout lieu d’être mentionné ici : la création et l’utilisation d’un tableau de variants, pour le stockage des valeurs dans les objets Session et Application. Un variant, nous le savons, peut contenir un tableau, et non une seule valeur. Remarque : Un tableau désigne dans la pratique une longue ligne de valeurs binaires, stockées selon un ordre spécifique dans des espaces mémoires contigus. Il suffit de faire en sorte que le variant désigne le premier élément, en précisant les informations relatives à la taille et à la structure, ce dont le moteur de script se charge dans tous les cas. Les tableaux créés dans un variant peuvent avoir une ou plusieurs dimensions. Le tableau peut alors être associé à une variable au niveau application ou session, puis être entièrement disponible selon les besoins. Le code précédent illustrait l’application de cette technique pour un tableau à une dimension : Dim varTableau(3) varTableau (0) = "Ceci est un" varTableau (1) = "tableau de variants" varTableau (2) = "stocké dans" varTableau (3) = "l’objet Session" Session("Variant_Array") = varTableau. Début et fin des applications et des sessions Nous avons déjà mentionné ce point en examinant le fonctionnement des applications et des sessions ASP. Résumons-nous en termes simples :. ➢ Une application démarre au moment où le premier utilisateur demande une page ASP se trouvant dans la portée de l’application, c’est-à-dire dans le répertoire racine par défaut du site web ou de l’application virtuelle définie par l’utilisateur, située dans un sous-répertoire de ce site. Ce démarrage a lieu avant celui de toute session utilisateur.. ➢ Une session démarre lorsqu’un utilisateur appelle pour la première fois une page ASP dans l’application par défaut ou dans une application virtuelle (si aucune session active n’est associée à cet utilisateur).. 131.

(28) ASP 3.0 Professionnel. ➢ Une session prend fin lorsque l’utilisateur n’a chargé aucune page ASP avant expiration du délai d’inactivité fixé pour la session. Ce délai peut être défini dans le code du script à l’aide de la propriété Session.Timeout, ou individuellement pour chaque application dans la boîte de dialogue Propriétés, ou encore par la modification de la valeur par défaut dans la métabase d’IIS, via la section IIS: d’Active Directory. Une session se termine également à la fin de l’exécution d’une page contenant un appel de méthode Session.Abandon.. ➢ Une application prend fin dès que la dernière session active au sein de l’application est terminée.. Directive de traitement ASP Nous l’avons vu au chapitre 1, une directive de traitement peut être ajoutée dans une page ASP. Ici, nous l’avons utilisée pour définir le langage de script par défaut de la page. Toutefois, la directive de traitement peut contenir plus d’éléments. Cette instruction admet les mots-clés suivants : Mot-clé. Description. LANGUAGE="nom_langage". Définit le langage de script par défaut de la page, conformément au chapitre 1. Exemple : <%@LANGUAGE="VBScript"%>. ENABLESESSIONSTATE= "True"|"False". Positionné sur False, empêche l’envoi d’un cookie de session au navigateur. Ainsi, aucun objet Session n’est créé, et le contenu des sessions existantes cesse d’être disponible.. CODEPAGE="page_de_code". Définit la page de code utilisé (voir plus haut). Exemple : <%@CODEPAGE="1252"%>. LCID="identificateur_langue". Définit l’identificateur de paramètres régionaux de la page (voir plus haut). Exemple : <%@LCID="2057"%>. TRANSACTION="type_transaction". Précise que le fichier de la page doit être exécuté dans un contexte transactionnel. Les valeurs admises sont : « Required » : le script est exécuté dans une transaction existante ou lance une nouvelle transaction. « Requires_New » : le script lance toujours une nouvelle transaction. « Supported » : le script est exécuté dans une transaction existante, mais ne lance aucune nouvelle transaction. « Not_Supported » : le script n’est pas exécuté dans une transaction existante et ne lance aucune nouvelle transaction. Pour en savoir plus sur les transactions, reportez-vous au chapitre 18.. 132.

Références

Documents relatifs

Il est aussi possible d’associer un poids (w ij ) aux arcs. Plusieurs des techniques de r´ esum´ es pr´ esent´ ees sont utilis´ ees dans le domaine des articles de nouvelles.

Là encore, avec cette fois Li Zhi 李贄 (1527-1602) et sa théorie du “cœur d’enfant” (tongxin shuo 童心說), la philosophie venait fonder en raison un phénomène dont

Une distinction importante s’effectue ainsi : la reconstitution architecturale, à laquelle est associée une signification scientifique précise, n’a pas la même

La variation régionale des souches (diversité et fréquence) révélée dans cette étude peut être un indicateur de la variation régionale de la pathogénicité et de

Les féministes intervenant dans les maisons d’hébergement tentent d’offrir des solutions concrètes aux femmes, leur permettant d’éviter les situations dangereuses pour

Il s'agit d'une notion dont on peut dire d'abord qu'elle recouvre un spectre de mesures très larges : la qualification des matières premières qui composent les produits (ainsi,

Os consumidores estão mais conscientes sobre os benefícios de alimentos mais naturais em relação aos processados e ultraprocessados.. Pesquisa recente da Sociedade Brasileira de

Entretanto, orientações de manejo, como uso de sementes sadias; localização adequada dos viveiros; eliminação de cucurbitáceas próximas ao mamoeiro; eliminação de