Introduction Aux Systèmes dInformation et Multimédia T. Bourdeaudhuy S. Collart-Dutilleul P. Kubiak IG 2 I - Saison 2006/2007 ASP / Pages Web Statiques
ISIM 1 – Active Server Pages 2T. Bourdeaudhuy – IG 2 I Saison Séance 3 QCM Objet Server –Bases de données –Accès au Système de fichiers du serveur –(à présenter APRES global.asa) Fichier Global.asa Gestion des erreurs Rappel : –Exemples de CTP sur le cours ReM2
OBJET SERVER
ISIM 1 – Active Server Pages 4T. Bourdeaudhuy – IG 2 I Saison Objet SERVER Représente le serveur Web et le moteur ASP Propriété –ScriptTimeout : Temps maximum d'exécution des scripts ASP (90 secondes par défaut) Méthodes –CreateObject(ObjectID) : Crée une instance du composant serveur identifié par l'ObjectID –GetLastError : Renvoie une instance d'objet ASPError représentant la dernière erreur survenue –HTMLEncode(chaine) : Applique les règles d'encodage et de syntaxe du HTML à la chaîne de caractères passée en paramètre –URLEncode(chaine) : Applique les règles d'encodage des URLs à la chaîne de caractères passée en paramètre –MapPath : Transforme un chemin relatif ou virtuel pointant vers une ressource du site en un chemin physique –Execute(url) : Exécute le script ASP indiqué par l'URL, puis rend la main au script appelant –Transfer(url) : Exécute le script ASP indiqué par l'URL, sans rendre la main au script appelant Exercice 20 : –Utiliser la fonction URLEncode pour passer un message dans lurl contenant les caractères spéciaux : <, &, = –Utiliser la fonction HTMLEncode pour afficher ce texte –Utiliser la fonction execute pour exécuter un script situé sur une autre page –Tester la fonction Mappath pour connaître le répertoire correspondant à votre répertoire partagé \\webasp\login$ sur le serveur \\webasp\login$
BASES DE DONNEES
ISIM 1 – Active Server Pages 6T. Bourdeaudhuy – IG 2 I Saison Connexion à une base de données Création dun objet de connexion ODBC –SET objetConn = Server.CreateObject("ADODB.Connection") Méthodes –Open("Nom_Lien_ODBC") : Ouverture de la base –Close : Fermeture de la base –Execute("Commande SQL") : Exécute une requête SQL Renvoie un objet recordset Ex : SET recordSet = objetConn.execute(SQL)
ISIM 1 – Active Server Pages 7T. Bourdeaudhuy – IG 2 I Saison Sources de données ODBC ODBC : Object Database Connectivity Source de données : DSN : Data Source Name Privilèges dAdministration du Serveur : création de la source dans Panneau de Configuration/Administration/Sources de données ODBC/DSN Système Chaînes sans DSN : spécifier driver & chemin de la BDD –"DBQ=" & Server.Mappath("mabase.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25" –"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("compteur.mdb") –Cf. moodle : syntaxe à respecter strictement
ISIM 1 – Active Server Pages 8T. Bourdeaudhuy – IG 2 I Saison Objet RecordSet Propriétés –EofPlus denregistrement disponible Collections –Fields : Enregistrements retournés (cas SELECT) –Accès à des sous-éléments : –rs.fields(0) :Premier champ de lenregistrement –rs.fields.count :Nombre de champs –rs.fields(0).name :Nom du champ Méthodes –MoveNextPasser à lenregistrement suivant –MoveFirstRetourner au premier enregistrement –Move Passer enregistrements
ISIM 1 – Active Server Pages 9T. Bourdeaudhuy – IG 2 I Saison Rappels de SQL (Structured Query Language) SELECT [DISTINCT] FROM ` ` SELECT … WHERE = SELECT … WHERE LIKE % % SELECT … WHERE IN (val1,val2) SELECT … WHERE BETWEEN AND SELECT … WHERE … ORDER BY ASC|DESC, … INSERT INTO (, …) VALUES (,…) DELETE FROM WHERE … UPDATE WHERE … SET =, …
ISIM 1 – Active Server Pages 10T. Bourdeaudhuy – IG 2 I Saison Exercices Exercice 21 : Modifier lexemple didentification pour lire les données à partir de la base de données –Ajouter des scripts dadministration : ajout, suppression et modification des logins et passwords Exercice 22 : Créer une page permettant dentrer et dexécuter une requête SQL quelconque –Afficher ses résultats dans le cas dune requête de sélection
Système de fichiers du serveur + dinfos : poly compléments ASP sur moodle
ISIM 1 – Active Server Pages 12T. Bourdeaudhuy – IG 2 I Saison Accès au système de fichiers Objet FILESYSTEMOBJECT : permet daccéder aux fichiers et répertoires et disques du serveur Création dun objet de connexion au fichier système Set OFS = Server.CreateObject("Scripting.FileSystemObject") Permet de –Créer des objets daccès aux disques –Créer des objets daccès aux répertoires –Disposer de méthodes de manipulation des fichiers et répertoires –… Rappel : chemin daccès physique à un fichier : –cheminFichier = Server.MapPath("nom_fichier")
ISIM 1 – Active Server Pages 13T. Bourdeaudhuy – IG 2 I Saison Disques : Objets DRIVE Collection DRIVES de FileSystemObject –Éléments de type DRIVE Propriétés dun objet « DRIVE » : DriveLetter : Lettre de lecteur DriveType : Type du disque (0 : inconnu, 1 : Amovible, 2 : Fixe, 3 : Réseau, 4 : CD-Rom, 5 : Lecteur RAM) IsReady : Le média est inséré ou non AvailableSpace : Espace disponible (également FreeSpace) TotalSize : Espace disque total VolumeName : Nom du disque RootFolder : Objet FOLDER représentant la racine … Exercice 23 : lister les lecteurs du serveurs
ISIM 1 – Active Server Pages 14T. Bourdeaudhuy – IG 2 I Saison Répertoires : Objets FOLDER Propriétés –Name, Size, Attributes –DateCreated, DateLastAccessed, DateLastModified –ParentFolder : Objet FOLDER contenant son répertoire parent Méthodes –Copy (chemin physique) : Copie le répertoire –Delete : Supprime le répertoire –Move (chemin physique) : Déplace le répertoire Collections –Files : Objets FILE représentant les fichiers du répertoire –SubFolders : Objets FOLDER représentant ses sous-répertoires Exercice 24 : lister les noms des sous-répertoires dune lecteur –Version récursive avec une fonction
ISIM 1 – Active Server Pages 15T. Bourdeaudhuy – IG 2 I Saison Fichiers : Objets FILE Propriétés –Attributes, Datecreated, Datelastaccessed, Datelastmodified –Name, Path, Size, Type –Parentfolder : Objet FOLDER représentant le parent Méthodes –Copy (chemin physique) : Copie le fichier –Delete : Supprime le fichier –Move (chemin physique) : Déplace le fichier –Openastextstream (IOMode) Ouvre le fichier et retourne un objet TEXTSTREAM –IOMode 1/ForReading | 2/ForWriting | 8/ForAppending Exercice 25 : Ajouter à lexercice précédent les noms des fichiers
ISIM 1 – Active Server Pages 16T. Bourdeaudhuy – IG 2 I Saison Fichiers Ouverts : Objets TEXTSTREAM Propriété –AtEndOfLine, AtEndOfStream, Column, Line : position courante Méthodes –Close() –Read(max) : Lit un nombre donné de caractères –ReadAll () :Lit le contenu intégral de lobjet –ReadLine() : Lit une ligne entière –Write text : Écrit une chaîne –WriteLine text : Écrit une chaîne et ajoute le saut de ligne Exercice 26 : proposer douvrir un des fichiers listés pour lafficher
ISIM 1 – Active Server Pages 17T. Bourdeaudhuy – IG 2 I Saison Méthodes de lObjet FILESYSTEMOBJECT Manipulation fichiers : –CopyFile, MoveFile, CreateTextFile, DeleteFile, FileExists, OpenTextFile, GetFile Manipulation répertoires : –CopyFolder, MoveFolder, CreateFolder, DeleteFolder, FolderExists, GetFolder Créer un nouveau fichier texte –CreateTextFile(nom_fichier, [BoolEcraser]) Ouvrir un fichier texte –OpenTextFile(nom_fichier, IOMode) Exercice 27 : proposer la création de nouveaux fichiers Exercice 28 : Améliorer le formulaire de saisie dune requête quelconque en listant (champ select) les bases de données disponibles
ISIM 1 – Active Server Pages 18T. Bourdeaudhuy – IG 2 I Saison Méthodes de lObjet FILESYSTEMOBJECT Manipulation des noms de fichiers : GETBASENAME(chemin) –Nom du dernier composant du chemin GETEXTENSIONNAME(chemin) –Retourne lextension du fichier GETFILENAME (chemin) –Extrait et retourne le nom de fichier GETPARENTFOLDERNAME (chemin) –Retourne le parent dun chemin
GLOBAL.ASA
ISIM 1 – Active Server Pages 20T. Bourdeaudhuy – IG 2 I Saison Fichier Global.asa /1 Fichier unique placé dans le répertoire racine du site –Il comporte quatre sous-routines exécutées lors de la création et suppression des objets application et session –Permet la définition de paramètres (et variables) globaux –Session.Timeout, Server.ScriptTimeout Structure Sub Application_OnStart ' action à exécuter lors du démarrage de l'application seuls objets autorisés : application et serveur END SUB SUB Application_OnEnd ' actions à réaliser lors de larrêt du Site. END SUB
ISIM 1 – Active Server Pages 21T. Bourdeaudhuy – IG 2 I Saison Fichier Global.asa /2 SUB Session_OnStart ' action à exécuter lors de la création dune nouvelle session END SUB SUB Session_OnEnd ' actions à réaliser lors de la fermeture de la session END SUB Exercice 29 : Définir un mécanisme de comptage du nombre dutilisateurs en ligne
ISIM 1 – Active Server Pages 22T. Bourdeaudhuy – IG 2 I Saison Global.asa Objets Statiques Section Les objets déclarés dans la section object ne sont pas instanciés avant d'être appelés dans un script Utilisés dans les collections StaticObjects des objets session et application Structure <Object RunAt="Server" Scope="Session|Application" Id="Identifiant" {ProgId="ProgId"|ClassId="ClassId"}> Exemples
Gestion des Erreurs Objet ASPERROR : Version 3.0 dASP
ISIM 1 – Active Server Pages 24T. Bourdeaudhuy – IG 2 I Saison Objet ERR ON ERROR RESUME NEXT –Active une gestion derreur spécifique Propriétés –DESCRIPTION : Description de lerreur –HELPCONTEXT : Identifiant dune rubrique daide –HELPFILE : Chemin du fichier daide –NUMBER : Code de lerreur –SOURCE : Source de lerreur Méthodes –CLEAR() Réinitialisation des propriétés
ISIM 1 – Active Server Pages 25T. Bourdeaudhuy – IG 2 I Saison Objet ASPERROR Permet de recueillir des informations sur les erreurs survenues lors de l'exécution du code ASP de la page Utile pour les pages de traitement des erreurs e.g. custom500.asp Création : méthode GetLastError de lObjet SERVER –SET Error = Server. GetLastError Propriétés (lecture seule) –ASPCode : Code derreur –ASPDescription: Description détaillée de lerreur –Category: Code source responsable de lerreur –Column: Numéro de colonne de lerreur –Description: Description courte de lerreur –File: Nom du fichier traité lorsque lerreur sest produite –Line: Numéro de ligne de lerreur –Number: Numéro de lerreur COM standard –Source: Code source responsable de lerreur
ISIM 1 – Active Server Pages 26T. Bourdeaudhuy – IG 2 I Saison Objet RegExp SET oRegExp = NEW REGEXP Propriétés –GLOBAL Indique si la recherche doit être effectuée pour toutes les occurrences de la chaîne ou seulement la 1ère –IGNORECASE Indique si la chaîne est sensible à la casse –PATTERN Indique la chaîne modèle à rechercher Méthodes –EXECUTE(str) Retourne un objet collection MATCHES contenant les informations relatives à la comparaison –REPLACE(str1,str2) Remplace toutes les sous-chaînes trouvées par une autre –TEST str Retourne un booléen indiquant si la recherche sest effectuée avec succès
ISIM 1 – Active Server Pages 27T. Bourdeaudhuy – IG 2 I Saison Objet Match Propriétés –FIRSTINDEX Indique la position dans la chaîne source où lexpression régulière a été rencontrée –LENGTH Indique le nombre de caractères correspondant dans la chaîne –VALUE Le texte trouvé dans la chaîne Collection MATCHES : –Propriétés COUNT et ITEM
Annexes Administration du Server Composants additionnels Conventions de Nommage Critères dévaluation des CTP et exercices
ISIM 1 – Active Server Pages 29T. Bourdeaudhuy – IG 2 I Saison Composants Additionnels Cdont : Envoi de Mails AcxImage : Génération dimages Cf. AdRotator Afficher des annonces différentes à chaque affichage d'une page ASP BrowserType Indiquer les caractéristiques du navigateur du client ContentRotator Afficher un texte différent à chaque affichage d'une page ASP Counters Gérer des compteurs permanents IISLog Administrer /Explorer un fichier journal généré par le serveur IIS MyInfo Stocker des valeurs de propriétés qui peuvent être créées dynamiquement NextLink Gérer une liste d'adresses URL dans un fichier texte. PageCounter Comptabiliser le nombre d'ouverture d'une page ASP PermissionChecker Vérifier si un utilisateur à le droit d'accéder à un fichier Tools Utilitaires (tester l'existence d'un fichier, traiter un formulaire HTML, générer une valeur entière aléatoire, …) ASPSmartUpload Gérer les téléchargements de fichiers en Upload ou en Download à partir d'un serveur hôte
Administration du Serveur IIS Démo sous Windows XP Répertoires virtuels DSN systèmes
Conventions de Nommage Déclaration et initialisation des variables Variables ASP Variables de requêtes, formulaires Fonctions Répertoires et fichiers Modularité Clarté et lisibilité du code
ISIM 1 – Active Server Pages 32T. Bourdeaudhuy – IG 2 I Saison Déclaration et Initialisation des variables Utiliser (1 ère ligne du source) : provoque des erreurs de compilation si des variables ne sont pas déclarées Utiliser les mots-clés DIM et CONST Toujours initialiser les variables : EMPTY, "", 0 Les chaînes de requête SQL sont définies et initialisées avant dêtre utilisées
ISIM 1 – Active Server Pages 33T. Bourdeaudhuy – IG 2 I Saison Variables ASP Variables en minuscules : nomVar1, maSuperVariable Constantes et mots-clés du langage en MAJUSCULES Utilisation de noms pertinents (pas de « toto ») Des préfixes sont utilisés pour définir : –La portée des variables : Session/Application/Globale/Locale –Le type de la variable : Int/Str/Bool/Date/Objet/Tab Exemples : –Un compteur à lintérieur dune fonction : lInt_i –Une variable globale : gStr_nomUser –Une variable de session : sStr_idOk –Le résultat dun test : lBool_isTrue
ISIM 1 – Active Server Pages 34T. Bourdeaudhuy – IG 2 I Saison Variables de formulaires, Requêtes Un préfixe décrit le type de champ de formulaire : –txt, passwd, textarea, radio, submit, button, hidden, select, … Tous les formulaires ont un nom, e.g. formCoord Les variables de formulaire utilisent ce nom : –formCoord_txtMail, formCoord_txtLogin Les variables ASP qui récupèrent des champs de formulaires portent le nom de la variable correspondante : –gStr_mail, gStr_login Les chaînes de requête SQL et les objets de connexion et de résultat correspondants doivent porter un nom fondé sur le même motif DANS TOUS LES CAS UTILISER UN NOMMAGE HOMOGENE
ISIM 1 – Active Server Pages 35T. Bourdeaudhuy – IG 2 I Saison Fonctions Indiquer dans le nom dune fonction ce qu'elle fait (verbe) : –get : récupération dune valeur –set : modification dune valeur –mk : réalisation dun traitement –show/write/print : affichage Un préfixe peut être utilisé pour indiquer ce quelle renvoie Exemples : –Affichage dun tableau : showTab() –Vérification dune identification : boolVerifUser()
ISIM 1 – Active Server Pages 36T. Bourdeaudhuy – IG 2 I Saison Répertoires et fichiers Les répertoires ne doivent pas être imbriqués Les extensions dépendent de la fonction du fichier : –asp, htm –inc, js pour les librairies asp et javascript Des préfixes permettent de connaître le contenu du fichier : –f formulairex traitement sans affichage –m menu –c cadre html
ISIM 1 – Active Server Pages 37T. Bourdeaudhuy – IG 2 I Saison Modularité Découper les traitements en fonctions génériques Utiliser des inclusions de fichiers pour les fonctions communes à plusieurs pages –Attention : des fichiers inclus ne doivent pas en inclure dautres (notion de module) Attention à la portée des variables Séparer le code client (HTML, javascript) du code ASP –Fonctions, inclusions, appels en haut de la page –Quand cest nécessaire, veiller à minimiser les ouvertures/fermetures
ISIM 1 – Active Server Pages 38T. Bourdeaudhuy – IG 2 I Saison Clarté et lisibilité du code Indentation BSD pour lASP ET le HTML ! User et abuser de commentaires pertinents : –Au moment de la déclaration dune variable –Avant la déclaration dune fonction –A chaque fois que lon effectue un traitement non trivial (début dune boucle, calcul dindex, … ) Commenter la fin dune boucle par son nom : WHILE lInt_i IN … DO traitements LOOPlInt_i
Critères dévaluation des CTP & Exercices Forme /3 Qualité du programme /3 Fonctionnalités attendues /14
ISIM 1 – Active Server Pages 40T. Bourdeaudhuy – IG 2 I Saison Forme Tout ce qui permet de sy retrouver quand on reprend le programme Indentation : tabulations, passage à la ligne Quantité, mise en forme et pertinence des commentaires Lisibilité globale : enchevêtrement html/php/javascript, définition des fonctions au début de chaque page Choix des noms de paramètres, variables, fonctions, librairies pertinents Respect des nommages html/php Esthétique du résultat dans les limites du raisonnable (ni trop beau si toutes les questions n'ont pas été faites, ni linverse)
ISIM 1 – Active Server Pages 41T. Bourdeaudhuy – IG 2 I Saison Qualité du programme Tout ce qui est indépendant de la fonction du programme Emploi de structures de contrôle adaptées et évoluées quand cest nécessaire (foreach, switch) Structure de la base de données conforme aux spécifications, qui permet l'ajout de fonctionnalités supplémentaires facilement Fermeture des bases de données, fichiers, … Tests aux limites : absence de résultats d'une requête … Utilisation raisonnée des variables globales et locales Modularité adaptée (traitements réutilisables, paramètres utiles et bien documentés, pas d'effets de bord néfastes), utilisation de librairies Robustesse, messages d'erreur pour l'utilisateur