CHAPITRE 8 INTRODUCTION A ASP
1. ASP - Introduction ASP (Active Server Page) est un standard Microsoft permettant de générer des pages WEB à la volées. Les Pages ASP se repèrent par leur extension .ASP. Les scripts ASP peuvent être écrits en Javascript ou en VBScript. <%@ language=Javascript%> <%@ language=VBScript%> Les instructions sont interprétées par le serveur et sont repérables par les balises <% … %> Les ASP ont été conçues à la base pour fonctionner sur le serveur Web de Microsoft intitulé Microsoft IIS (Internet Information Server), une adaptation est disponible depuis peu sur NetScape FastTrack et sur Apache.
1. ASP - Exemple <%@ LANGUAGE="JAVASCRIPT" %> <HTML> <HEAD> <TITLE>Exemple de script ASP</TITLE> </HEAD> <BODY> <% for(i=1;i<=10;i++){%> Compteur valeur de i : <%= i%> <BR> <% } %> </BODY> </HTML>
1. ASP - Le modèle Objet – l'objet Request Permet aux script ASP d'accéder aux informations émises par le Client (variables, formulaires, cookies, Certificats SSL). Propriété : TotalBytes : Nombre d'octets contenus dans le corps de la requête HTTP. Méthodes : BinaryRead(n) : Extrait n octets du corps de la requête HTTP. Attention si un accès à la collection Form a été réalisée précédemment dans le code cette méthode échouera. Collection : Cookies : Collection de cookies Form : Collection des variables d'un formulaire QueryString : Collection des paramètres envoyés par l'URL. ServerVariables : Collection contenant les entêtes HTTP et les variables d'environnement..
1. ASP - Le modèle Objet – l'objet Request - Exemple <%@ LANGUAGE="JAVASCRIPT" %> <HTML> <HEAD> <TITLE>Exemple de script ASP</TITLE> </HEAD> <BODY> <% if (Request.QueryString ("nom") == 'cnam' || Request.Cookies("nom") == 'cnam') { Response.Write ('Bienvenue au CNAM'); } %> </BODY> </HTML>
1. ASP - Le modèle Objet – l'objet Response Permet aux script ASP d'accéder à la réponse HTTP envoyée par le serveur au Client.. Propriété : Buffer : true / false Précise si la réponse est stockée dans un buffer IIS. ContentType : Type MIME de la réponse. ExpiresAbsolute : Date d'expiration de la page. Status : Etat de la page (200, 404). Méthodes : AddHeader ("nom","valeur") : Créée une entête HTTP. BinaryWrite (safeArray) : Envoie sur le flot HTTP du code binaire. Clear () : Vide le tampon End () : Fin du traitement de la page en cours. Flush (): Envoie et vide le buffer. Redirect ("URL") : Redirige sur une autre URL. Write ("chaine") : Écrit la chaîne dans le buffer. Collection : Cookies : Collection de cookies
1. ASP - Le modèle Objet – l'objet Response - Exemple <%@ LANGUAGE="JAVASCRIPT" %> <HTML> <HEAD> <TITLE>Exemple de script ASP</TITLE> </HEAD> <BODY> <% Response.clear (); Response.Cookies("nom") = Resquest.QueryString("nom"); Response.end (); %> </BODY> </HTML>
1. ASP - Le modèle Objet – l'objet Server Boite à outils disponibles pour la création de script ASP. Propriété : ScriptTimeout : Durée maximale d'exécution du script (par défaut fixé à 90s). Permet d'éviter de surcharger le serveur et d'interrompre les scripts qui boucle, en attente de ressources verrouillées. Méthodes : CreateObject (ID) : Instanciation Objet utilisable dans le script identifiée par sont ClassID ou son ProgID ClassID : N° référencé dans le base des registres ProgID : chaine identifiant l'objet à Instancier (ADOBD.Connection) Execute ("URL") : Exécute une URL. Le script courant reprend à la fin du traitement de l'url Transfert ("URL") : Passe la main à l'URL. MapPath ("URL") : Chemin physique complet de l'URL. GetLastError ( ) : Renvoie un objet ASPError contenant la description de la dernière erreur rencontrée.
1. ASP - Le modèle Objet – l'objet ASPError Disponible a partir de la version d'ASP 3.0. Il est accessible via la méthode GetLastError ( ) de l'objet Server. Propriétés : ASPCode : N° d'erreur généré par IIS. ASPDescription : Description de l'erreur si liée à ASP. Source : Extrait du code source ayant provoqué l'erreur Column : Position de l'erreur Line : Ligne de l'erreur File : Fichier ayant provoqué l'erreur Description : Description de l'erreur.
1. ASP - Le modèle Objet – l'objet Application Cet objet permet de déclarer des variables et d'instancier des Objets disponibles par tous les utilisateurs de l'application. Collection : Contents : collection de variables StaticObjects : collection d'objets Méthode : Contents.Remove ("nomvar") : supprime une variable Contents.RemoveAll () : supprime toutes les variables Lock : Verrouille l'objet Application Unlock : Déverrouille l'objet Application Événement : onStart : Déclenché lorsque le premier utilisateur accède à l'application onEnd : Déclenché lorsque l'application prend fin.
1. ASP - Le modèle Objet – l'objet Session L'objet Session est crée par tous visiteurs, lorsqu'il accède à sa première page ASP. Il a une durée de vie fixée par une temporisation (timeout). Cet objet permet de déclarer des variables et d'instancier des Objets disponibles par un utilisateur tout au long de sa session. Collection : Contents : collection de variables StaticObjects : collection d'objets Propriété : SessionID : Lecture seule. Retourne l'identifiant de la session, unique pour l'objet application. TimeOut : Lecture / Ecriture. Fixe la durée de vie de la session (en minutes).
1. ASP - Le modèle Objet – l'objet Session Méthode : Contents.Remove ("nomvar") : supprime une variable Contents.RemoveAll ( ) : supprime toutes les variables Abandon ( ) : Met fin à la session. L'accès à une autre page déclenchera le démarrage d'une nouvelle session Événement : onStart : Déclenché au démarrage de la session onEnd : Déclenché lorsque la session prend fin.
ATTENTION : Leur utilisation doit se faire avec prudence. 1. ASP - Le modèle Objet – Global.asa Le fichier Global.asa placé dans le répertoire racine de l'application est déclenché chaque fois qu'une application ou qu'une session débute. Il peut contenir les déclarations de variables et objets application et / ou Session. Il peut contenir le code des évènements déclenchés au démarrage et / ou à l'arrêt d'une application et / ou d'une session. Attention : L'utilisation d'objets Application et / ou session peut altérer les performances. ATTENTION : Leur utilisation doit se faire avec prudence.
1. ASP - Le modèle Objet – Global.asa <OBJECT id="objDOM" runAt = "Server" Scope = "Application" progId = "MSXML2.DOMDocument"> </OBJECT> function Application_OnStart () { var date_jour; objDOM.load ("test.xml"); date_jour = new Date (); Application ("date_jour") = date_jour.toString (); } Pour mettre à jour une variable d'Application, il est important de verrouiller préalablement l'accès. Application.lock () Application("nom_var") = variable; Application.Unlock ();
2. COM - Introduction à COM COM (Component Object Model) conçus par Microsoft, est incontournable en ASP. COM est spécifique à Windows alors que ACTIVE X est multi-plate-forme. COM crée un standard en matière d’interopérabilité des composants. Il spécifie les règles de communication entre les composants. COM met à disposition un modèle de programmation efficace basé sur la programmation Objet facilitant l’intégration de composants. Dans une page ASP, le runtime COM est utilisé en permanence par l’interpréteur ASP, qui exécute le moteur Active Scripting pour convertir le code VBSCRIPT / JAVASCRIPT en appel COM. COM + est spécifique à Windows 2000, il enrichie le modèle COM de services de transactions (MTS Microsoft Transaction Server)). DCOM permet l’intégration dans les développements d’objets distribués.
2. COM - Gestion des fichier La gestion des fichiers s'effectue par l'utilisation de objet COM : Scripting.FileSystemObject Méthodes : OpenTextFile (filename, [iomode, [create]] : Ouverture d'un fichier texte. filename : nom du fichier iomode : type d'ouverture du fichier 1 – Lecture 2 – Écriture 3 – Ajout create : true / false création du fichier ReadLine ( ) : Lecture d'une ligne WriteLine ("chaine" ) : Ecriture d'une ligne Close ( ) : Fermeture du fichier Propriété : AtEndOfStream : Fin de fichier atteinte Exemple : OpenTextFile("c:\testfile.txt", ForWriting, True)
2. COM - Gestion des fichiers var objHTMLFile; var tampon; var buffer; try { objHTMLFile =Server.CreateObject("Scripting.FileSystemObject"); HTMLFile = Server.MapPath(file); lireFichier = objHTMLFile.OpenTextFile (HTMLFile, 1 ,false); tampon = ""; buffer = ""; while (!lireFichier.AtEndOfStream) { buffer = lireFichier.ReadLine(); tampon += buffer; } catch (erreur) { return tampon;
2. COM - Parsing XML Le Parsing d'un fichier XML s'effectue en instanciant l'objet : MSXML2.DOMDocument Méthodes : load ("URL") : Retourne un objet DOM. Chargement d ’un fichier XML loadXML("chaine") : Retourne un objet DOM. Création d ’une DOM à partir d ’une chaine Propriété : async : true /false (lecture synchrone / asynchrone) documentElement : racine
2. COM - Parsing XML - Exemple Instanciation xmlActu = Server.CreateObject("MSXML2.DOMDocument"); xmlActu.async = false; if (xmlActu.load(cheminActuCanal)) { racineActu = xmlActu.documentElement; N_channel = racineActu.selectNodes("channel"); if (N_channel.length > 0) { elementTitle=N_channel[0].getElementsByTagName("title").item(0); Response.write (elementTitle.text); } Désactivation du mode Asynchrone Lecture Racine Sélection de noeuds Nombre de noeuds Sélection d'éléments <document> <channel> <tile>XML</title> <tile>HTML</title> </channel> </document > Valeur de l'éléments
3. ADO - Les bases d’ADO ADO (Active X Data Objects) désigne des composants permettant d’interagir avec des sources de données. OLE DB permet l’accès aux données, mais n’est pas disponible dans tous les langages disponible pour C++ et JAVA. ADO propose une interface d’accès à OLE DB disponible pour ASP et Visual basic. ADO est permet d’établir une connexion avec toutes sources de données par opposition à ODBC qui est dédié aux SGBDR. ADO se situe donc entre l’application (consumer) et la source de données (provider).
3. ADO - Les bases d’ADO L’objet connexion permet de se connecter à une source de données. objCon = Server.CreateObject ("ADODB.connection"); objCon.Open(chaineConnexion,UserID,Password) L’objet command permet d'exécuter des requêtes dites actions. objCom = Server.CreateObject ("ADODB.Command"); objCom.commandText = "update personne set nom = 'martin'"; objCom.commandType = objCom.adCmdText; objCom.Execute (); objCom.close (); L’objet Recordset contient l’ensemble des données extraites lors de l’exécution d’une commande. Cet objet contient notamment une collection Fields qui contient également une collection d’objets Field. objCon = Server.CreateObject("ADODB.recordset"); objCon.Open("select * from test.csv","DSN=test"); objCon.moveFirst(); Response.Write(objCon.fields(1).value); objCon.close (); Autres fonctions moveLast, moveNext, update, delete, addNew
3. ADO - Les bases d’ADO – Les types de curseurs Open(sql,Objconnexion,typeCurseur) Statique (adopenStatic). Le resultset est figé les modifications effectuées par les autres utilisateurs ne sont pas visibles. Déplacement vers l'avant (adOpenForwardOnly). Par défaut, Idem précédent, déplacement uniquement vers l'avant. (gain en performance car le curseur peut oublier les lignes passées). Dynamique (adOpenDynamic). Tous les changements effectués par les autres utilisateurs sont visibles dans le recordSet. Jeu de Clés (adOpenKeySet). Idem précédent. Si des enregistrements sont crées par des autres utilisateurs, ils ne sont pas visibles.
3. ADO - Les bases d’ADO – Les types de verrous Open(sql,Objconnexion,typeCurseur,typeVerrous) Lecture seule (adLockReadOnly). Par défaut. Enregistrement en lecture seule. Pessimiste (adLockPessimistic). Verrouillage effectué lors de l'édition. Optimiste (adLockOptimistic). Verrouillage effectué lors de l'update. Optimiste par lots (adLockBatchOptimistic). Verrouillage d'un ensemble d'enregistrement doit être utilisé conjointement à la méthodes updateBatch (). Open(sql,Objconnexion,typeCurseur,typeVerrous,options) admCmdText : chaine contenant une requête sql admCmdTable : chaine contenant le nom d'une table admCmdStoredProc : chaine contenant une proc stock.
3. ADO - Les bases d’ADO – Exemple <%@ language=Javascript%> <% Response.write ("<HTML><BODY>"); objCon = Server.CreateObject("ADODB.recordset"); objCon.Open("select * from test.csv","DSN=test",objCon.adOpenDynamic); while (!objCon.eof) { Response.Write("<BR>" + objCon.fields(1).value); objCon.moveNext(); } objCon.close(); Response.write ("</BODY></HTML>"); %>
3. ADO - Les bases d’ADO – Les Transactions objCon.BeginTrans(); : Début d'une transaction objCon.RollBackTrans(); : Annulation de la transaction objCon.CommitTrans(); Validation de la transaction conn = Server.CreateObject("ADODB.Connection"); connstring = "driver={SQL Server};server=localhost;” connstring += “uid=sa; pwd=pwd; database=Pubs;” conn.open(connstring); conn.BeginTrans (); try { conn.Execute (“update personne set nom = ‘martin’"); conn.CommitTrans(); } catch (erreur) { conn.RollbackTrans();
4. Les références La bibliographie ASP 3 de FRANTZ, Gérard OSMAN EYROLLES MULTIMEDIA ASP 3.0 PROFESSIONNEL de FRANCIS, Brian EYROLLES
5. Les sites WEB www.commentcamarche.net msdn.microsoft.com/scripting/