Pages ASP
Transcription
Pages ASP
Licence professionnelle « Management des organisations » Option « Systèmes d’information et Réseaux » Internet et applications dans l’entreprise (2) Serveur MIIS et pages ASP O. Auzende 2008-2009 Microsoft Active Server Pages (ASP) ............................................................................................................................ 3 Inclusion de fichiers ................................................................................................................................................... 3 Utilisation de fonctions .............................................................................................................................................. 4 Exercice.............................................................................................................................................................. 4 Objets spécifiques à la programmation ASP .............................................................................................................. 5 Utilisation de l’objet Request ................................................................................................................................. 5 Exercice.............................................................................................................................................................. 6 Utilisation de l’objet Response .............................................................................................................................. 6 Utilisation de l’objet Application ........................................................................................................................... 6 Utilisation de l’objet Session.................................................................................................................................. 7 Interrogation de bases de données .............................................................................................................................. 7 Lecture de la base de données ................................................................................................................................ 7 Création d’un nouvel enregistrement...................................................................................................................... 9 Suppression d’un enregistrement.......................................................................................................................... 10 Exercice............................................................................................................................................................ 11 2 Internet et applications dans l’entreprise O. Auzende Microsoft Active Server Pages (ASP) La technologie ASP de Microsoft est dédiée aux serveurs Microsoft Internet Information Server (MIIS). Elle propose un cadre de développement associant du HTML, des composants (ou contrôles) ActiveX et des scripts incorporés dans les pages de suffixe .ASP. Ces scripts sont écrits en VBScript ou en Jscript (version augmentée de JavaScript propriétaire de Microsoft pour écrire des scripts serveurs). La première fois qu'une page ASP est appelée, les scripts de la page sont "compilés" (pseudo-compilation, le VBScript étant normalement interprété). Le code généré est conservé par le serveur tant qu'il n'est pas modifié. Ces scripts « compilés » sont ensuite exécutés à la demande et les résultats sont retournés au client sous forme d'une page HTML. L’exécution des pages ASP requiert un serveur Microsoft Internet Information Server (MIIS) sous Windows Server, Windows XP Pro, Windows Vista. CONFIGURATION STANDARD Les fichiers relatifs au serveur PWS ou au MIIS se trouvent dans le dossier Inetpub. On place les pages ASP dans un sous-dossier de Inetpub\wwwroot (par exemple pages). Le lancement du serveur se fait via l’icône correspondante apparaissant sur le bureau : Choisir « Site Web par défaut » et faire un double-clic sur le triangle tourné vers la droite pour lancer le serveur. Lorsque le serveur est lancé, l’appel à une page se fait par : http://localhost/pages/page.asp Inclusion de fichiers Page jour.asp <%@ LANGUAGE="VBSCRIPT"%> <%Response.Write("-----------------------------------------------------------------") Response.Write("<p>Aujourd'hui, nous sommes le")%> <%=Now%></p> <%Dim salutation If Hour(Now)<12 Then salutation="Bonne matinée !" ElseIf Hour(Now)<16 Then salutation="Bonne après-midi !" Else salutation="Bonne soirée !" End If %> <p><b><%=salutation%></b></p> <%Response.Write("-----------------------------------------------------------------")%> 3 Page inclure.asp <html> <head><title>Exemple d'inclusion de page ASP</title></head> <body> La ligne : <dir><!--#include file="jour.asp"--></dir> permet d'inclure dans le fichier "inclure.asp" courant le fichier "jour.asp"<br> <p>Le résultat de l'inclusion est alors le résultat de l'exécution du fichier "jour.asp" :</p> <!--#include file="jour.asp"--> <p>Suite de la page inclure.asp...</p> </body> </html> Utilisation de fonctions La première page contenant deux fonctions est incluse dans la seconde, qui fait appel à ces fonctions : Page Carre.asp <% function Carre(num) Carre = num* num end function function Cube(num) Cube = num * num * num end function %> Page utilfonctions.asp <%@ LANGUAGE="VBSCRIPT"%> <!--#include file="Carre.asp"--> <HTML> <HEAD><TITLE>Exemple d'inclusion d'un fichier de fonctions</TITLE></HEAD> <BODY> <%Session("compteur")=Session("compteur")+1%> <table border='1'> <tr><td>Nombre</td><td>Carré</td><td>Cube</td></tr> <% i = 1%> <%do while i <=20 %> <tr align="center"><td> <%=i%> </td><td> <%=Carre(i)%> </td><td> <%=Cube(i)%> </td></tr> <%i = i+1%> <% Loop %> </table> </BODY> </HTML> Exercice Ecrire un fichier « fibo.asp » qui calcule la fonction de Fibonacchi pour un entier n. La fonction est définie par : Fibo(0) = 1 Fibo(1) = 1 Fibo(n) = Fibo(n-2) + Fibo(n-1) Ecrire ensuite le fichier « utilfibo.asp » qui affiche les 20 premiers nombres de la suite (voir ci-contre). 4 Internet et applications dans l’entreprise O. Auzende Objets spécifiques à la programmation ASP Utilisation de l’objet Request Lorsqu’un formulaire fait appel à la méthode POST, l’objet Request récupère les paramètres par Request.Form("paramètre") Page form1.html <html> <head><title>Formulaire</title></head> <body> <form method="post" action="rep1.asp"></p> <table><tr><td>Prénom :</td> <td><input type="text" name="prenom"></td></tr> <tr><td>Nom : </td> <td><input type="text" name="nom"></td></tr> <tr><td>Type d'ordinateur : </td> <td><input type="checkbox" name="type" value="PC">PC <input type="checkbox" name="type" value="MAC">Mac</td></tr> </table> <p><input type="submit" value="OK"></p> </form> </body> </html> Page rep1.asp <%@ LANGUAGE="VBSCRIPT"%> <html> <head><title>Réponse formulaire</title></head> <body> <p>Voici les éléments que vous avez donnés : </p> <table> <tr> <td>Votre prénom est : </td> <td><%=Request.Form("prenom")%></td> </tr> <tr> <td>Votre nom est : </td> <td><%=Request.Form("nom")%></td> </tr> <tr> <td>Votre type d'ordinateur est : </td> <td><%=Request.Form("type")%></td> </tr> </table> </body> </html> Lorsqu’un formulaire fait appel à la méthode GET, l’objet Request récupère les paramètres par Request.QueryString("paramètre") Dans form2.html, <form method="post" action="rep2.asp"> a été remplacé par : <form method="get" action="rep2.asp"></ Page rep2.asp <%@ LANGUAGE="VBSCRIPT"%> <html> <head><title>Réponse</title></head> <body> <table> <tr><td>La variable prénom contient : </td> <td><%=Request.QueryString("prenom")%></td></tr> <tr><td>La variable nom contient : </td> <td><%=Request.QueryString("nom")%></td></tr> <tr><td>La variable type contient : </td> <td><%=Request.QueryString("type")%></td></tr> </table> </body> </html> 5 Exercice Ouvrir la page formulaire.html (ci-contre à gauche). Noter les renseignements indispensables pour écrire la page reponse.asp. Ecrire cette page réponse permettant d’obtenir le résultat (voir illustration à droite). Utilisation de l’objet Response L’objet Response est chargé de l’écriture sur la page résultante. <%Response.Write variable%> peut être abrégé en <%=variable%> L’objet Response crée les cookies par <%Response.Cookies("Nom")=Request.QueryString("Nom") Response.Cookies("Nom").Expires=Date+365 %> (si GET) Mais c’est l’objet Request qui teste ensuite si un cookie existe ou n’existe pas : <%If Request.Cookies("Nom")= "" Then ... et récupère les cookies existants par : <% For Each cookie in Request.Cookies %> <%="Cookie : "+ cookie +" : " + Request.Cookies(cookie)%><BR> <% Next %> Utilisation de l’objet Application Un objet Application démarre à la première demande d’une page .asp spécifique à un serveur et se termine quand on arrête le serveur. Cet objet peut être utilisé pour stocker des valeurs de variables. Exemple : Page compteurdate.asp <%@ LANGUAGE="VBSCRIPT"%> <HTML> <HEAD><TITLE>Date</TITLE></HEAD> <BODY> <p>Cette page a été visitée par <%=Application("Compteur")%> visiteurs.</p> <p>Si aucun nombre ne s'est affiché, c'est que la page est visitée pour la première fois depuis le lancement du serveur.</p> <p>Le nombre de visiteurs va être mis à jour.</p> <%Application.Lock Application("Compteur")=Application("Compteur") + 1 Application.Unlock%> <p>Résultat : cette page a été visitée par <%=Application("Compteur")%> visiteurs.</p> <p>Cette page a été visitée pour la dernière fois le : <%=Application("Dateheure")%></p> <p>Si aucune date ne s'est affichée, c'est que la page a été ouverte pour la première fois depuis le lancement du serveur.</p> <p>La date va être mise à jour.</p> <%Application.Lock Application("Dateheure")=Now Application.Unlock%> <p>Résultat : vous visitez cette page le : <%=Application("Dateheure")%></p> </BODY> </HTML> 6 Internet et applications dans l’entreprise O. Auzende Utilisation de l’objet Session Les variables de type Session stockent des informations sur le serveur le temps d’une session, sont associées à un visiteur et peuvent être utilisées indifféremment sur toutes les pages .asp d’un site Web. La ligne : <%Session("compteur")=Session("compteur")+1%> est insérée dans deux fichiers : utilfonctions.asp et session.asp. La page session.asp permet de voir l’identificateur de la session et le nombre de pages visitées dans le même site possédant la ligne <%Session("compteur")=Session("compteur")+1%> : Page session.asp <%@ LANGUAGE="VBSCRIPT"%> <HTML> <HEAD><TITLE>Lecture des paramètres de la session</TITLE></HEAD> <BODY> <P>Identificateur de la session : <%=Session.SessionID%></P> <%Session("compteur")=Session("compteur")+1%> Le compteur vaut : <%=Session("compteur")%> pour cette session, ce qui signifie qu'il y a eu <%=Session("compteur")%> pages visitées.</P> </BODY> </HTML> Interrogation de bases de données Les pages ASP s'interfacent avec les composants ActiveX, qui sont des morceaux de logiciels jouant un rôle spécifique. Les composants ActiveX peuvent être écrits en C++, Java, Visual Basic, Cobol... Une bibliothèque de composants est disponible. Un composant ActiveX permet l’accès à une base de données relationnelle. Un objet composant est créé dans la page par la méthode CreateObject de l’objet Server. On peut ensuite accéder à ses propriétés et méthodes pour exécuter des fonctions. Lorsque la connexion est établie, un objet de type RecordSet permet de récupérer le résultat des requêtes sur la base de données. La base de données PAYS1.MDB contient une table Pays ayant un champ NOM et un champ CAPITALE. Le champ NOM est la clé de la table. La source de données et le pilote doivent être déclarés via l’option ODBC 32 bits du panneau de configuration de Windows, en configurant le DSN Système : lien vers la base de données et spécification de son type : driver Access (fichiers de type mdb). Lecture de la base de données Lecture 1 : lecture de la totalité de la table. Page lecture1.asp : lecture de la totalité de la table <%@ LANGUAGE="VBSCRIPT"%> <html> <head> <title>Lecture d'une base de données Access</title> </head> <body> <table border=1> <tr><td><b>Nom du pays</b></td><td><b>Capitale</b></td></tr> <% ' crée un objet de type Connection Set objConnection=Server.CreateObject("ADODB.Connection") ' ouverture connexion : base, utilisateur, mot de passe objConnection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/pages") & "\pays1.mdb" ' crée un objet de type RecordSet Set objRecord=Server.CreateObject("ADODB.Recordset") 7 ' le remplit avec le résultat d’une requête objRecord.Open "SELECT * FROM pays", objConnection ' fait afficher le résultat ligne à ligne Do While Not objRecord.EOF %> <tr> <td><%=objRecord("nom")%></td> <td><%=objRecord("capitale")%></td> </tr> <% objRecord.MoveNext Loop objRecord.Close objConnection.Close ' fermeture de la connexion Set objRecord = Nothing Set objConnection = Nothing %> </table> </body> </html> Page lecture2.asp (lecture sélective à partir d’une liste de sélection dynamique) <%@ LANGUAGE="VBSCRIPT"%> <html> <head> <title>Lecture d'une base de données Access</title> </head> <body> <form method="get" action="reponse.asp"> Choisissez un pays : <select name="pays"> <% Set objConnection=Server.CreateObject("ADODB.Connection") ' ouverture connexion : base, utilisateur, mot de passe objConnection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/pages") & "\pays1.mdb" ' crée un objet de type RecordSet Set objRecord=Server.CreateObject("ADODB.Recordset") ' le remplit avec le résultat d’une requête objRecord.Open "SELECT * FROM pays", objConnection Do While Not objRecord.EOF %> <option><%=objRecord("nom")%></option> <%objRecord.MoveNext Loop objRecord.Close objConnection.Close Set objRecord = Nothing Set objConnection = Nothing %> </select> <input type="submit" value="OK"> </form> </body> </html> 8 Internet et applications dans l’entreprise O. Auzende Page reponse.asp <%@ LANGUAGE="VBSCRIPT"%> <html> <head><title>Lecture d'une base de données Access</title></head> <body> <% pays=Request.QueryString("pays") Set objConnection=Server.CreateObject("ADODB.Connection") objConnection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/pages") & "\pays1.mdb" Set objRecord=Server.CreateObject("ADODB.Recordset") objRecord.Open "SELECT * FROM pays where nom='"&pays&"'", objConnection %> <p>Pays choisi : <%=objRecord("nom")%></p> <p>Capitale : <%=objRecord("capitale")%></p> <% objRecord.Close objConnection.Close Set objRecord = Nothing Set objConnection = Nothing %> </body> </html> Création d’un nouvel enregistrement La page creation1.html demande dans un formulaire le nom du pays correspondant à l’enregistrement à créer ; la création effective est effectuée par la page creation1.asp. Page creation1.html <html> <head> <title>Creation</title> </head> <body> <form method="post" action="creation1.asp"></p> <table border="0"> <tr><td>Pays : </td><td><input type="text" name="nom"></td></tr> <tr><td>Capitale : </td><td><input type="text" name="ville"></td></tr> <tr><td><input type="submit" value="Envoi"></td><td> </td></tr> </table> </form> </body> </html> Page creation1.asp <%@ LANGUAGE="VBSCRIPT"%> <html> <head><title>Création d'un enregistrement</title></head> <body> <% pays=Request.Form("nom") capitale=Request.Form("ville") Set objConnection=Server.CreateObject("ADODB.Connection") objConnection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/pages") & "\pays1.mdb" Set objRecord=Server.CreateObject("ADODB.Recordset") %> <%objRecord.Open "INSERT INTO pays (nom,capitale) VALUES('"&pays&"','"&capitale&"')", objConnection %> 9 <p>Enregistrement ajouté à la base. Nouveau contenu : </p> <table border=1> <tr><td><B>Nom du pays</B></td><td><B>Capitale</B></td></tr> <%objRecord.Open "SELECT * FROM pays", objConnection Do While Not objRecord.EOF%> <tr><td><%=objRecord("nom")%></td> <td><%=objRecord("capitale")%></td></tr> <%objRecord.MoveNext Loop%> </table> <%objRecord.Close objConnection.Close Set objRecord = Nothing Set objConnection = Nothing %> </body> </html> Suppression d’un enregistrement La page suppression.asp demande dans un formulaire le nom du pays correspondant à l’enregistrement à supprimer (la liste des pays est proposée dans une liste de sélection générée automatiquement en lisant la base de données). La suppression effective est effectuée par la page suppression1.asp. Page suppression.asp <HTML> <HEAD> <TITLE>Suppression</TITLE> </HEAD> <BODY> <FORM METHOD="post" ACTION="suppression1.asp"></P> <p>Choisissez un pays : <select name="nom"> <% Set objConnection=Server.CreateObject("ADODB.Connection") objConnection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/pages") & "\pays1.mdb" Set objRecord=Server.CreateObject("ADODB.Recordset") objRecord.Open "SELECT * FROM pays", objConnection Do While Not objRecord.EOF %> <option><%=objRecord("nom")%></option> <%objRecord.MoveNext Loop objRecord.Close objConnection.Close Set objRecord = Nothing Set objConnection = Nothing %> </select></p> <P><INPUT TYPE="submit" VALUE="Envoi"></P> </FORM> </BODY> </HTML> 10 Internet et applications dans l’entreprise O. Auzende Page suppression1.asp <%@ LANGUAGE="VBSCRIPT"%> <html> <head> <title>Suppression d'un enregistrement</title> </head> <body> <% nom=Request.Form("nom") Set objConnection=Server.CreateObject("ADODB.Connection") objConnection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/pages") & "\pays1.mdb" Set objRecord=Server.CreateObject("ADODB.Recordset") objRecord.Open "DELETE FROM pays WHERE nom='"&nom&"'", objConnection %> <p>Enregistrement supprimé de la base. Nouveau contenu :</p> <table border=1> <tr><td><B>Nom du pays</B></td><td><B>Capitale</B></td></tr> <%objRecord.Open "SELECT * FROM pays", objConnection Do While Not objRecord.EOF %> <tr><td><%=objRecord("nom")%></td> <td><%=objRecord("capitale")%></td></tr> <%objRecord.MoveNext Loop%> </table> <%objRecord.Close objConnection.Close Set objRecord = Nothing Set objConnection = Nothing %> </body> </html> Exercice La base de données employes1.mdb est une base Access comportant les tables employe, service, salaire reliées par les jointures suivantes : 1) Déclarer la base comme source de données ODBC. 11 2) Ecrire la page lecture-employes.asp qui lit la base et réalise l’affichage suivant : 3) Ecrire la page lecture-employes2.asp qui lit la base et réalise l’affichage suivant : 12