1 / 41

Introduction Aux Systèmes d’Information et Multimédia

Introduction Aux Systèmes d’Information et Multimédia. ASP / Pages Web Statiques. T. Bourdeaud’huy S. Collart-Dutilleul P. Kubiak IG 2 I - Saison 2006/2007. Séance 3. QCM Objet Server Bases de données Accès au Système de fichiers du serveur (à présenter APRES global.asa)

helki
Download Presentation

Introduction Aux Systèmes d’Information et Multimédia

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction Aux Systèmes d’Information et Multimédia ASP / Pages Web Statiques T. Bourdeaud’huy S. Collart-Dutilleul P. Kubiak IG2I - Saison 2006/2007

  2. 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 ISIM1 – Active Server Pages 2

  3. OBJET SERVER

  4. 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 l’url 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 ISIM1 – Active Server Pages 4

  5. BASES DE DONNEES

  6. Connexion à une base de données • Création d’un 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) ISIM1 – Active Server Pages 6

  7. Sources de données ODBC • ODBC : Object Database Connectivity • Source de données : DSN : Data Source Name • Privilèges d’Administration 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 ISIM1 – Active Server Pages 7

  8. Objet RecordSet • Propriétés • Eof Plus d’enregistrement disponible • Collections • Fields : Enregistrements retournés (cas SELECT) • Accès à des sous-éléments : • rs.fields(0) : Premier champ de l’enregistrement • rs.fields.count : Nombre de champs • rs.fields(0).name : Nom du champ • Méthodes • MoveNext Passer à l’enregistrement suivant • MoveFirst Retourner au premier enregistrement • Move <n> Passer <n> enregistrements ISIM1 – Active Server Pages 8

  9. Rappels de SQL (Structured Query Language) • SELECT [DISTINCT] <*|champ1,champ2> FROM `<Table>` • SELECT … WHERE <ChampTexte>=‘<valeur>’ • SELECT … WHERE <ChampNum>=<valeurNum> • SELECT … WHERE <Champ> LIKE ‘%<valeur>%’ • SELECT … WHERE <Champ> IN (‘val1’,’val2’) • SELECT … WHERE <Champ> BETWEEN <Num1> AND <Num2> • SELECT … WHERE … ORDER BY <champ1> ASC|DESC, … • INSERT INTO <Table>(<champ1>, …) VALUES (‘<val1>’,…) • DELETE FROM <Table> WHERE … • UPDATE <Table> WHERE … SET <champ1>=‘<val1>’, … ISIM1 – Active Server Pages 9

  10. Exercices • Exercice 21 : Modifier l’exemple d’identification pour lire les données à partir de la base de données • Ajouter des scripts d’administration : ajout, suppression et modification des logins et passwords • Exercice 22 : Créer une page permettant d’entrer et d’exécuter une requête SQL quelconque • Afficher ses résultats dans le cas d’une requête de sélection ISIM1 – Active Server Pages 10

  11. Système de fichiers du serveur + d’infos : poly compléments ASP sur moodle

  12. Accès au système de fichiers • Objet FILESYSTEMOBJECT : permet d’accéder aux fichiers et répertoires et disques du serveur • Création d’un objet de connexion au fichier système Set OFS = Server.CreateObject("Scripting.FileSystemObject") • Permet de • Créer des objets d’accès aux disques • Créer des objets d’accès aux répertoires • Disposer de méthodes de manipulation des fichiers et répertoires • … • Rappel : chemin d’accès physique à un fichier : • cheminFichier = Server.MapPath("nom_fichier") ISIM1 – Active Server Pages 12

  13. Disques : Objets DRIVE • Collection DRIVES de FileSystemObject • Éléments de type DRIVE • Propriétés d’un 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 ISIM1 – Active Server Pages 13

  14. 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 d’une lecteur • Version récursive avec une fonction ISIM1 – Active Server Pages 14

  15. 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 à l’exercice précédent les noms des fichiers ISIM1 – Active Server Pages 15

  16. 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 l’objet • 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 d’ouvrir un des fichiers listés pour l’afficher ISIM1 – Active Server Pages 16

  17. Méthodes de l’Objet 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 d’une requête quelconque en listant (champ select) les bases de données disponibles ISIM1 – Active Server Pages 17

  18. Méthodes de l’ObjetFILESYSTEMOBJECT • Manipulation des noms de fichiers : • GETBASENAME(chemin) • Nom du dernier composant du chemin • GETEXTENSIONNAME(chemin) • Retourne l’extension du fichier • GETFILENAME (chemin) • Extrait et retourne le nom de fichier • GETPARENTFOLDERNAME (chemin) • Retourne le parent d’un chemin ISIM1 – Active Server Pages 18

  19. GLOBAL.ASA

  20. 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 <SCRIPT Language="VBScript" RUNAT="Server"> 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 l’arrêt du Site. END SUB ISIM1 – Active Server Pages 20

  21. Fichier Global.asa /2 SUB Session_OnStart ' action à exécuter lors de la création d’une nouvelle session END SUB SUB Session_OnEnd ' actions à réaliser lors de la fermeture de la session END SUB </SCRIPT> • Exercice 29 : Définir un mécanisme de comptage du nombre d’utilisateurs en ligne ISIM1 – Active Server Pages 21

  22. Global.asaObjets Statiques • Section <object> • 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"}> </Object> • Exemples <Object RunAt="Server" Scope="Session" Id="Connection_id" ProgId="ADODB.Connection"> </Object> <OBJECT runat="Server" scope="Session" id="MyADRot" progid="MSWC.ADRotator"> </OBJECT> ISIM1 – Active Server Pages 22

  23. Gestion des Erreurs Objet ASPERROR : Version 3.0 d’ASP

  24. Objet ERR • ON ERROR RESUME NEXT • Active une gestion d’erreur spécifique • Propriétés • DESCRIPTION : Description de l’erreur • HELPCONTEXT : Identifiant d’une rubrique d’aide • HELPFILE : Chemin du fichier d’aide • NUMBER : Code de l’erreur • SOURCE : Source de l’erreur • Méthodes • CLEAR() Réinitialisation des propriétés ISIM1 – Active Server Pages 24

  25. 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 l’Objet SERVER • SET Error = Server. GetLastError • Propriétés (lecture seule) • ASPCode : Code d’erreur • ASPDescription : Description détaillée de l’erreur • Category : Code source responsable de l’erreur • Column : Numéro de colonne de l’erreur • Description : Description courte de l’erreur • File : Nom du fichier traité lorsque l’erreur s’est produite • Line : Numéro de ligne de l’erreur • Number : Numéro de l’erreur COM standard • Source : Code source responsable de l’erreur ISIM1 – Active Server Pages 25

  26. 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 s’est effectuée avec succès ISIM1 – Active Server Pages 26

  27. Objet Match • Propriétés • FIRSTINDEX Indique la position dans la chaîne source où l’expression 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 ISIM1 – Active Server Pages 27

  28. Annexes Administration du Server Composants additionnels Conventions de Nommage Critères d’évaluation des CTP et exercices

  29. Composants Additionnels • Cdont : Envoi de Mails • AcxImage : Génération d’images • Cf. http://www.laltruiste.com 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 ISIM1 – Active Server Pages 29

  30. Administration du Serveur IIS Démo sous Windows XP Répertoires virtuels DSN systèmes

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

  32. Déclaration et Initialisation des variables • Utiliser <%OPTION EXPLICIT%> (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éesavant d’être utilisées ISIM1 – Active Server Pages 32

  33. 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 à l’intérieur d’une fonction : lInt_i • Une variable globale : gStr_nomUser • Une variable de session : sStr_idOk • Le résultat d’un test : lBool_isTrue ISIM1 – Active Server Pages 33

  34. 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 ISIM1 – Active Server Pages 34

  35. Fonctions • Indiquer dans le nom d’une fonction ce qu'elle fait (verbe) : • get : récupération d’une valeur • set : modification d’une valeur • mk : réalisation d’un traitement • show/write/print : affichage • Un préfixe peut être utilisé pour indiquer ce qu’elle renvoie • Exemples : • Affichage d’un tableau : showTab() • Vérification d’une identification : boolVerifUser() ISIM1 – Active Server Pages 35

  36. 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  formulaire x  traitement sans affichage • m  menu • c  cadre html ISIM1 – Active Server Pages 36

  37. 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 d’autres (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 c’est nécessaire, veiller à minimiser les ouvertures/fermetures <% %> ISIM1 – Active Server Pages 37

  38. Clarté et lisibilité du code • Indentation BSD pour l’ASPET le HTML ! • User et abuser de commentaires pertinents : • Au moment de la déclaration d’une variable • Avant la déclaration d’une fonction • A chaque fois que l’on effectue un traitement non trivial (début d’une boucle, calcul d’index, … ) • Commenter la fin d’une boucle par son nom : WHILE lInt_i IN … DO traitements LOOP ‘lInt_i ISIM1 – Active Server Pages 38

  39. Critères d’évaluation des CTP & Exercices Forme /3 Qualité du programme /3 Fonctionnalités attendues /14

  40. Forme • Tout ce qui permet de s’y 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 l’inverse) ISIM1 – Active Server Pages 40

  41. 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 c’est 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 ISIM1 – Active Server Pages 41

More Related