Accueil
Java Standard Edition
Java EE 5
Visual Basic .Net 2005
Visual C++ .Net 2005
Visual C# .Net 2005
Cours ASP .Net 2.0
Postgresql
Linux
Visual Studio 2008
ASP 3.0 Classique
Cours Javascript - DOM - DHTML
Cours Ajax
VBA
Assembleur
Perl
Membres
L'auteur du site
Nouveautés sur le site
Contacts
Plan du site
Exécution d'un programme
Les archives Jar
Les classes abstraites
Les interfaces
Les tableaux
La généricité
Les énumérations
Les classes internes
Classes anonymes et internes locales
E/S(1):InputStream et OutputStream
E/S(2):FileInputStream et FileOutputStream
E/S(3):Reader et Writer
E/S(4):FilterInputStream et FilterOutputStream
E/S(5):Les filtres d'octets: PrintStream
E/S(6):Les filtres d'octets: DataInputStream et DataOutputStream
E/S(7):Les filtres d'octets: BufferedInputStream et BufferedOutputStream
E/S(8):Flux de caractères: PrintWriter
E/S(9):Flux de caractères: FilterReader et FilterWriter
E/S(10):Flux de caractères: InputStreamReader, OutputStreamWriter, StreamDecoder, StreamEncoder
E/S(11):Flux de caractères: BufferedReader et BufferedWriter
E/S(12):Flux de caractères: FileReader et FileWriter
La classe String (java.lang)
La bibliothèque Swing en Java
Les bases de données en Java
JDBC ( Java Database Connectivity )
Les interfaces graphiques
Les fichiers de configuration en Java
INSTALLATION JAVA EE 5, JRE 6, ECLIPSE, TOMCAT, ETC SOUS LINUX
INSTALLATION JAVA EE 5, JRE 6, ECLIPSE, TOMCAT, ETC SOUS WINDOWS
Les applications Web en java
Les filtres Java (javax.servlet.Filter)
I Généralités
I.1 Le formulaire principal
I.2 Les objets créés par Visual
I.3 Les variables références
I.4 Le garbage collector
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Applications winforms
I.2 Applications MFC
I.3 Objets managés ou pas
I.4 Objets non managés
I.5 Objets managés - handle
I.6 Le top-level ^
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Puissant et Accessible
I.2 Créer ses classes
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
III Les services Windows
IV Le .net remoting
V Communication Tcp avec TcpClient et TcpListener
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Un EDI formidable
I.2 Inclure C# ou VB
I.3 L'objet Response
I.4 Les évènements
II ASP .net et les bdd
II.1 Essayer plusieurs fois la requête
I 2.1 Fichiers distincts
I.2.2 Avec la balise script
I.2.3 Inclure réellement
I.2.4 Avec Response.Write()
I.3.1 La méthode Response.Redirect()
I.4.1 Résoudre problème post
Installation Postgre Linux
Cours Postgresql
Le Shell Unix( Linux, Ubuntu)
Les scripts C-Shell
Programmation système Unix
Reseau Linux
Les iptables
Windows Presentation Foundation(WPF)
Le Framework 3.0
Windows Workflow Foundation(WF)
ASP 3.0 Classique
Cours Javascript - DOM - DHTML
Chat Ajax
VBA Excel 2003
Assembleur
Perl
Inscription
Liste membres
Livre d'or
Forum
Accueil
>
ASP 3.0 Classique
>
ASP 3.0 Classique
____________________________________________________________________________________________________
Connexion
ASP( Active Server Pages) 3.0 : ASP classique
ASP est une technologie de Microsoft. Il permet de générer dynamiquement les pages web HTML.
ASP 3.0 a été introduit avec Windows 2000. Il succède à ASP 2.0 . Attention, il ne s’agit pas ici d’ASP .NET, mais d’ASP dit classique( ASP .net a succédé à l’ASP classique).
ASP possède des objets internes.
I)Le protocole http
HTTP est un protocole de niveau applicatif, c’est-à-dire qu’il est situé au-dessus d’un autre protocole : au-dessus de TCP. TCP/IP garantie que les données circulant sont correctement transmises. Les protocoles de niveau applicatif sont gérés par une application, ce qui explique leur nom. Ils ne sont pas gérés par des drivers. Autres protocoles de niveau applicatif : FTP, POP3, SMTP.
b) La transaction http
Il y a 4 étapes lors d’une transaction HTTP. Chaque transaction http dure seulement quelques secondes( ou moins).
- Connection
- Requête( Request)
- Réponse( Response)
- Déconnexion
b.1) La connexion
Le client essaye de se connecter( TCP/IP) à un serveur http, sur le port 80 du serveur. Le serveur utilise par défaut le port 80, mais un autre port peut être utilisé.
b.2) La requête
Nous parlerons ici de http 1.1.
Ensuite le client envoie une requête au serveur, en ASCII.
Pour chaque requête, le client doit indiquer une méthode à utiliser, pour dire ce qu’il veut faire. Il y a huit méthodes existantes : GET, POST, PUT, HEAD, OPTIONS, TRACE, DELETE, CONNECT.
La méthode GET est une méthode importante, car elle permet de demander au serveur de nous donner une page web.
GET <URL> <HTTP version>
b.3) La réponse
Le serveur web va ensuite répondre à la requête. Il répondra par du html.
La réponse est constituée de deux parties.
La première partie de la réponse sont les en-têtes http. Elles permettent de préciser le type de réponse qui va être renvoyée.
Les en-têtes HTTP sont, dans l’ordre :
b.3.1) L’en-tête ‘status’ :
Elle indique si on a trouvé la page ou pas. Par exemple, « HTTP/1.1 404 Object Not Found » veut dire que le serveur n’a pas trouvé la page web. Par contre, « HTTP/1.1 200 OK » veut dire que le serveur web a trouvé la page demandée.
b.3.2) L’en-tête ‘server’
Par exemple « Microsoft-IIS/4.0 ». C’est donc une information sur le serveur web.
b.3.3) L’en-tête ‘Date’
Elle indique la date et l’heure. Par exemple : « Date : Mon, 05 Mar 2007 08 :20 :10 GMT »
b.3.4) L’en-tête ‘Content-Length’( on rappelle que ‘content’ signifie ‘contenu’)
Contient la taille du contenu. Par exemple : « Content-Length : 624 »
b.3.5) L’en-tête ‘Content-type’
Contient le type du contenu. En général, « text/html ».
b.4) La déconnexion
Lorsque le serveur a répondu à la requête, il ferme la connexion. Le client doit donc se connecter à nouveau, s’il désire faire une nouvelle requête.
II) Généralités sur ASP
II.1) Le serveur IIS
ASP est intégré à IIS( Internet Information Server). IIS est le serveur le plus répandu de Microsoft. Ce serveur est intégré à certains systèmes d’exploitation Microsoft. Par exemple, Windows 2000 pro et Windows XP pro possèdent le serveur IIS 5, qui est capable d’exécuter de l’ASP. Cependant, dans ces deux cas, le serveur IIS n’est pas installé par défaut, vous devez l’installer.
II.2) Fonctionnement général d’ASP
ASP nous permet d’insérer des scripts dans nos pages html. Ces scripts sont exécutés par le serveur, et du code html est généré, comme résultat de ce script. En effet, le navigateur de l’internaute ne sachant qu’afficher du html, et étant donné que nous voulons afficher des pages qui varient en fonction de certains facteurs, la solution de générer des pages html dynamiquement est une bonne solution. L’idée est de générer du code html qui sera la page qu’on veut afficher, et la page qui correspond aux facteurs du moment.
Le fichier .asp passe donc par une dll de traitement, qui produit un fichier html à partir du fichier asp. Le serveur effectue donc un travail de génération automatique de code html.
II.2.1) Les langages de script
Le langage de script par défaut est le VBScript, mais d’autres langages sont possibles, comme le JScript( à ne pas confondre avec JavaScript), ou encore Perl… Le langage par défaut utilisé par ASP est modifiable dans une fenêtre de configuration de IIS.
II.2.2) L’extension .asp
Les pages asp se terminent par l’extension .asp, ce qui permet au serveur de savoir qu’il s’agit d’une page asp.
II.3) Les balises <% % >
Les balises <% %> permettent d’écrire votre code asp. Par défaut, le langage de script est le VBScript. Par conséquent, ce qui figure entre <% %> est du VBScript par défaut. Mais vous pouvez choisir un autre langage par défaut, comme JScript ou autre. Cependant, vous devez posséder un moteur de script pour ce langage( vous avez les moteurs de script pour VBScript et JScript par défaut dans ASP).
II.4) Les balises <SCRIPT> </SCRIPT>
Ces balises permettent également d’intégrer du code asp. Cela permet notamment d’inclure des scripts dans des langages différents du langage par défaut. Il faut préciser avec un attribut RUNAT = « Server » que le script doit être exécuté du côté du serveur, sinon il s’exécutera côté client.
<SCRIPT language= «VBScript» RUNAT= «Server»>
(…)
</SCRIPT>
II.5) <%@ LANGUAGE = JScript %>
Cette balise permet d’indiquer, pour la page web concernée, le langage par défaut pour toute cette page.
II.6) <%= %>
Comme beaucoup de langages webs dynamiques, asp permet d’intégrer dans le html une expression asp. Il suffit d’utiliser la syntaxe <%= expression %>
II.7) Les commentaires
<% 'Ceci est un commentaire %>
II.8) Les objets ASP
ASP vous fournit un ensemble d’objets relatifs au contexte de déroulement de l’application web.
On dispose de six objets, qui sont :
Request, Response, Application, Server, Session, ObjectContext .
II.8.1) Les collections ASP
Les objets application et session ont tous les deux une propriété ‘Contents’.
Ces objets permettent de pouvoir avoir des variables qui soient visibles en dehors de leur seule page web. Bref, des variables globales à toute l’application. L’objet session permet des variables qui durent toute la durée de la session( intérêt : garder le pseudo de l’utilisateur, etc). Alors que l’objet application permet d’avoir des variables qui durent jusqu’au redémarrage de l’application( intérêt : par exemple stocker le nom de la police, etc).
Cette propriété est une collection de valeurs, accessibles chacune à partir d’une clé. On a donc des couples clé/valeur.
Exemple : Application.Contents(« prenom ») = « jean »
Pour récupérer la valeur de prenom, on fait, par exemple :
<%= Application.Contents(« prenom ») %>
Remarque : la propriété Contents des objets Application et Session est définie comme étant la collection par défaut de l’objet. Ceci leur a permis d’autoriser une syntaxe raccourcie qui est :
Application(« prenom »), qui équivaut directement à Application.Contents (« prenom »)
<HTML>
<BODY>
<% Application.Contents("prenom")="jean"%>
Le prénom vaut:*<%=Application("prenom")%>*
</BODY>
</HTML>
Affiche : Le prénom vaut:*jean*
II.9) Le langage VBScript
VBScript est un sous-ensemble de VBA de Microsoft, qui est lui-même est un sous-ensemble de Visual Basic. VBScript est donc lui-même un sous-ensemble de Visual Basic.
VBScript n’est pas un langage orienté objet. Le concept d’héritage n’existe pas, par exemple. Cependant VBScript met à la disposition des objets, comme l’objet Application et l’objet Server, et c’est bien ce qui lui donne sa puissance. Ces objets viennent du serveur d’application( IIS), mais ces objets peuvent être des objets venant de Windows( objets qui sont dits objets ActiveX).
ASP n’est pas un langage objet, mais il en utilise certains concepts, comme la notion d’objet, la notion d’instanciation, la notion de propriété de l’objet, etc. Microsoft a donc introduit un peu la programmation objet dans son langage VBScript. La difficulté vient du fait qu’on ne sait pas si on doit penser en objet ou pas. La réponse est oui, pour toutes les notions objets présentes dans le langage. On peut donc penser que objConn est un objet, que ActiveConnection est une propriété de l’objet ObjCommand, etc.
Il est à noter que VBScript n’est pas propre à ASP, il est utilisable sous différents environnements, comme le serveur IIS de Microsoft, mais aussi le navigateur Internet Explorer, par exemple. VBScript possède des objets permettant d’entrer en contact avec l’environnement dans lequel il est, et c’est pour cette raison qu’il s’intègre aussi bien avec des environnements différents.
II.9.A) Les types de données
VBScript, comme d’autres langages de script, ne possède qu’un type de données. Ce type est le type variant( pourquoi variant ? Parce que c’est une variable !).
La déclaration de la variable n’est donc pas obligatoire, car une déclaration sert surtout à indiquer le type de la variable.
Cependant, chaque variable possède un sous-type, qui, lui, est similaire à la notion de type telle que nous la connaissons habituellement pour les variables. On peut obtenir ce sous-type grâce à la fonction typename( )
Exemple :
<% varTest = 65.6%>
Le type de varTest est:<%=typename(varTest)%>
Affiche : «
Le type de varTest est:Double
»
Exemples de sous-types : Integer, Long, Boolean, Byte, Single, Double, String, Object, etc.
Les variables numériques non initialisées sont initialisées à 0 automatiquement, et pour les chaînes, elles sont initialisées à «»( chaîne vide).
II.9.A.1) La déclaration des variables
Comme indiqué ci-dessus, la déclaration de la variable n’est pas obligatoire.
Ce qui est dangereux. Prenons par exemple :
<%
nombre1 = 15
nombre2 = 29
nombre3 = nombe1 + nombre 2 'faute de frappe à nombre1
%>
Ici, la faute de frappe à nombre1 fait que le moteur de script croit qu’il s’agit d’une nouvelle variable, qu’il initialisera à 0( il déduira son type, car d’après le fait qu’on le somme avec un integer, il doit s’agir d’un integer). La valeur de nombre3 est donc faussée, et vaut 0+29 = 29, au lieu de 15+29 = 44 .
III) ASP et les bases de données
Les exemples proviennent de msdn.
III.A) Création de l’objet Connexion
set objConn = server.createobject("ADODB.Connection")
Ici, on crée une instance du composant Connection.
Puis on affecte la chaine de connexion à l’objet Connection.
Exemple de chaine de connexion vu sur msdn( base access) :
strProvider = "Driver=Microsoft Access Driver (*.mdb); DBQ=C:\Inetpub\Wwwroot\Tutorial\guestbook.mdb;"
On ouvre ensuite la connexion:
objConn.Open strProvider
On remarque que “Open” est l’équivalent d’une méthode en programmation objet, mais ne nécessite pas de parenthèses pour entourer les paramètres passés.
III.B) Cas d’une commande sans requête
Une commande sans requête est une commande sql qui ne retourne rien, c’est à dire type DELETE, INSERT, UPDATE.
Exemple msdn :
'Instantiate Command object and use ActiveConnection property to
'attach connection to Command object
set cm = Server.CreateObject("ADODB.Command")
cm.ActiveConnection = objConn
'Define SQL query
cm.CommandText = "DELETE FROM Guestbook WHERE ID = " &strIDNum
cm.Execute
On instancie d’abord un objet Command. Puis on initialise sa propriété ActiveConnection avec notre objet Connection qui est objConn.
Comme vu ci-dessus, on remarque que ASP n’est pas un langage objet, mais il en utilise certains concepts, comme la notion d’objet, la notion d’instanciation, la notion de propriété de l’objet, etc. La difficulté vient du fait qu’on ne sait pas si on doit penser en objet ou pas. La réponse est oui, pour toutes les notions objets présentes dans le langage. On peut donc penser que objConn est un objet, que ActiveConnection est une propriété de l’objet cm, etc.
Ensuite, on initialise sa propriété CommandText avec la commande SQL voulue( qui ne doit pas être un SELECT).
Puis on appelle la méthode Execute.
III.C) Cas d’une requête( SELECT)
Exemple MSDN.
strQuery="SELECT * FROM Guestbook ORDER BY " &StrSort
'Instantiate a Recordset object and open a recordset using
'the Open method
Set rst = Server.CreateObject("ADODB.recordset")
rst.Open strQuery, strProvider
En anglais, record = enregistrement, et set = jeu, ensemble. Recordset signifie donc « ensemble d’enregistrements ». Un recordset est par conséquent un objet capable de contenir le résultat d’une requête. Car une requête retourne un ensemble d’enregistrements ! Un recordset est capable de contenir donc le contenu d’une table.
On crée d’abord une instance de l’objet recordset. Puis on exécute la requête en appelant sa méthode open.
On remarque à nouveau qu’il n’y a pas de parenthèses qui entourent les paramètres de la méthode open du recordset. Mais il y a bien une virgule qui sépare les paramètres.
On fait rst.Open et les deux paramètres sont une string contenant la requête et une string contenant la chaîne de connexion.
Si on utilise la méthode open du recordset avec la chaine de connexion comme deuxième paramètre, on n’a pas besoin d’ouvrir la connexion auparavant par objConn.open .
Dans le cas de ce rst.Open, il existe après : rst.Close
On peut remarquer que Microsoft, dans son objet recorset, a décidé de mélanger la notion de connexion et la notion de recordset. Car l’objet recordset peut faire les deux à la fois.
III.C.2) On peut faire aussi rst.Open strQuery, objConn
Ce qui, à priori, ne va pas rouvrir la connection( il faut donc avoir fait objConn.open auparavant), le nom de « open » prêterait donc à confusion pour cette utilisation.
RETOUR HAUT