Transcript Formation

Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique

Cours BD/WEB - INT Evry 1

Programme du séminaire

 Jour 1 : (salle E405) » objectifs du séminaire » rappels sur les SGBD relationnels » rappels sur Internet/web » principes des passerelles  Jour 2 : (salle E405) » quelques solutions industrielles » démonstration/programmation de différentes solutions 2 Cours BD/WEB - INT Evry

Intervenants

 Bruno Defude (jour 1) : enseignant/chercheur au dept INF depuis 1992, docteur informatique INPGrenoble, enseigne les BD depuis 1986  Claire Carpentier (Jour 2) : enseignant/chercheur au dept INF depuis 1998, docteur informatique Univ. Evry, enseigne les BD depuis 1995 3 Cours BD/WEB - INT Evry

Objectifs du cours

 Présenter les problèmes de couplage entre le Web et les SGBD  classifier les différentes approches utilisées pour le couplage  présenter différentes solutions industrielles Cours BD/WEB - INT Evry 4

Plan du cours

 Les SGBD relationnels  Le système World Wide Web  Les interfaces entre le Web et les BD » principes » solutions Microsoft (IDC, ASP) » L'approche Java (servlet, JSP)  Evolution du Web : XML 5 Cours BD/WEB - INT Evry

Cours BD/WEB - INT Evry 6

Bases de données relationnelles

Cours BD/WEB - INT Evry 7

Les SGBD relationnels

 Fonctionnalités  Modèles de données  langages de requêtes » SQL  transactions et contrôle de concurrence Cours BD/WEB - INT Evry 8

Fonctionnalités d'un SGBD

 permettre de représenter des informations (modèle de données)  permettre un accès facile aux informations stockées via des langages de requêtes déclaratifs  Stocker de l'information de manière fiable, efficace, évolutive et répartie (transactions, contrôle de concurrence, middleware) offrir différentes interfaces de programmation (langage de requêtes,

Les modèles pour les bases de données

 Modèle orienté conception : Entité/Association  Modèle orienté implantation : modèle relationnel Cours BD/WEB - INT Evry 10

Modèle Entité/Association [Chen 77]

 Exemple de modèle Eleve Code_elev Nom_Elev 1,1 Appartient Salle 1,n Classe 1,n 1,n Notation Note 0,n Matiere 0,n Prof Code_prof Nomprof Code_categ Nom_Categ 1,n Code_Matiere 1,n Fait cours No_Classe 11 Cours BD/WEB - INT Evry

Modèle Entité/Association

 Critique du modèle Entité/Association 

Avantages



Inconvénients

Sémantique riche un modèle de Uniquement Extension aux de données concepts objets (héritage, ...) de lg de manipulation associé description Pas 12 Pas de SGBD E/A

Modèle relationnel

 [CODD 70] « A Relational Model for Large Shared Data Banks »  Exemple » Employé(NoSs, Nom, Adresse, Age, salaire) » Projet(NoProjet , Libellé, ChefProjet) » Travaille_sur(NoSs, NoProjet) 13 Cours BD/WEB - INT Evry

Exemples de relations

Elève Num 1 2 3 Nom Bélaïd Millot Meunier Adresse Maisel CROUS Maisel Age 20 20 21 Inscrit NumElève CodeUV Note 2 1 2 3 BD BD IO IO 10 20 17 18 14 Cours BD/WEB - INT Evry

Modèle relationnel (suite)

 Schéma BD » Structure de relation  BD » Ensemble d’enregistrements reliés par des valeurs (clés étrangères)  Langage de manipulation » Ensembliste » Déclaratif » Standard international [ SQL 8, 89] Cours BD/WEB - INT Evry 15

Modèle relationnel (suite)

 Prototypes de recherche » System/R chez IBM (197) » Ingres à Berkeley (197)  Systèmes commerciaux » SQL/DS et DB2 d’IBM (1982) » Oracle (1983) » Ingres (1983) » Informix (1981) » Sybase (1984) 16 Cours BD/WEB - INT Evry

Modèle relationnel (suite)

 Avantages » Indépendance logique/physique » Langage de manipulation simple » Basé sur une théorie mathématique solide » Standard Cours BD/WEB - INT Evry 17

Langages associés au modèle relationnel

  Langages de Définition de Données (LDD) : » Définition /mise à jour des schémas des relations Langages de manipulation de données (LMD) : » » Interrogation : recherche de données Mises à jour : insertion, suppression, modification  SQL 18 Cours BD/WEB - INT Evry

Exemples de requêtes en algèbre relationnelle

 Base de données exemple : les vins Vins(num, cru, annee, degre) Recoltes(nvin, nprod, quantite) Producteurs(num, nom, prenom, region) Buveurs(num, nom, prenom, ville) Commandes(ncde, date, nb, nvin, qte) Livraisons(ncde, no_ordre, qteLivree) V R P B C L 19 Cours BD/WEB - INT Evry

Modèle E/A de la BD des vins

Vins num cru degré annee 0,n recoltes quantite 0,n Producteurs num nom prenom region 0,n concerne Buveurs num nom prenom ville 0,n Passer 1,1 1,1 Commandes ncde qté date 0,n Donner_lieu (1,1) Livraisons No_ordre qteLivrée date Cours BD/WEB - INT Evry 20

Introduction

Présentation de SQL

  Fonctionnalités : » » définition et manipulation de données au format relationnel contrôle des données Le langage de manipulation » » non procédural emprunté à l'algèbre relationnelle et au calcul relationnel de tuples  Puissance du langage de manipulation Algèbre Relationnelle + Fonctions Agrégats + Tri  

Une requête SQL (sans fonctions et tri) Suite d'opérations de l'algèbre relationnelle

Cours BD/WEB - INT Evry 21

Introduction

Présentation de SQL (2)

 Origine » » langage SEQUEL du prototype de SGBD relationnel SYSTEM/R (74-76) laboratoire de recherche IBM à San José  Normalisation ISO » » » norme SQL1 (1986, 1989) norme SQL2 (1992) nouvelle norme en préparation SQL3  Langage de requêtes des SGBD relationnels » » » » ORACLE (Oracle Corporation - 1977) INGRES (Ingres Technology - 1980) DB2 (IBM - 1984) INFORMIX (Informix Inc - 1981) » SYBASE (Sybase Inc - 1984) » MySQL (1995) Cours BD/WEB - INT Evry 22

Définition des données

Schéma d’une relation

 Création  CREATE TABLE Vins ( num Integer, cru Char(20), annee Integer) Mise à jour – Ajout d'un attribut (norme SQL2 !) ALTER TABLE Vins ADD COLUMN degre Integer  Suppression (norme SQL2 !) DROP TABLE Vins Cours BD/WEB - INT Evry 23

  Définition des données

Contraintes d’intégrité

règle qui définit la cohérence d'une donnée ou d'un ensemble de données de la BD » » » » » » Contraintes définies en SQL non nullité des valeurs d'un attribut unicité de la valeur d'un attribut ou d'un groupe d'attributs valeur par défaut pour un attribut contrainte de domaine clé primaire (un attribut ou un groupe) intégrité référentielle "minimale" CREATE TABLE Vins ( num cru annee integer PRIMARY KEY, char (40) NOT NULL, integer CONSTRAINT Cannee CHECK (annee between 1970 and 2010), degre number(4,2) CONSTRAINT Cdegre CHECK (degre between 9.0 and 15.0)) Cours BD/WEB - INT Evry 24

Syntaxe générale de recherche

Syntaxe Comment remplir les clauses ?

SELECT  Quel résultat souhaite voir l’utilisateur, schéma du résultat ?

FROM  Où sont les attributs dont j’ai besoin ?

[WHERE ]  Y-a t-il des conditions sur les valeurs exprimées dans ma requête ? Ai-je plusieurs relations dans ma clause FROM ?

Cours BD/WEB - INT Evry 25

Projection

"Donner tous les vins"

SELECT * FROM Vins 

"Donner la liste de tous les crus, avec élimination des doublons"

SELECT DISTINCT cru FROM Vins 26 Cours BD/WEB - INT Evry

Restriction et tri

 

"Donner les vins dont le cru commence par p ou P"

SELECT * FROM Vins WHERE cru LIKE ‘p%’ OR cru LIKE ‘P%’

"Donner les crus des vins de millésime 1995 et de degré 12, triés par ordre croissant"

SELECT cru FROM Vins WHERE annee=1995 AND degre = 12 ORDER BY cru Cours BD/WEB - INT Evry 27

Recherche des données

Jointure

"Donner les noms des producteurs de Pommard"

Produit cartésien SELECT nom FROM Vins V, Recoltes R, Producteurs P WHERE V.num = R.nvin

AND R.nprod=P.num

AND cru = ‘Pommard’ Conditions de jointures Nom d’attribut non ambigü Cours BD/WEB - INT Evry 28

Exemples avec fonctions

 "Donner la moyenne des degrés de tous les vins" SELECT Avg(degre) FROM Vins  "Donner la quantité totale commandée par le buveur Bac" SELECT Sum (qte) FROM Commandes, Buveurs WHERE Buveurs.nom= 'Bac' AND Buveurs.num=Commandes.nb Cours BD/WEB - INT Evry 29

Exemples de partitionnement

  

" Donner, pour chaque cru, la moyenne des degrés des vins de ce cru …"

SELECT cru, AVG(degre) FROM Vins GROUP BY cru

" … avec un tri par degré décroissant"

SELECT cru, AVG(degre) FROM Vins GROUP BY cru ORDER BY 2 DESC

" … uniquement si ce cru concerne plus de 3 vins"

SELECT cru, AVG(degre) FROM Vins GROUP BY cru HAVING COUNT(*)>=3 ORDER BY 2 DESC 30 Cours BD/WEB - INT Evry

    

Calcul de la partition

cru Vins Pommard initiale  Trier la relation selon les attributs de groupement  Créer une sous-relation pour chaque paquet ayant même valeur sur l'attribut sur l'ensemble des attributs de groupement, ici « cru »  Appliquer la clause SELECT sur chaque partition (dans notre exemple la valeur de cru et la moyenne des degrés sur la partition  Unifier les résultats  Appliquer la restriction du HAVING  et   et  Vins Vins Tavel Pommard Tavel Tavel cru Pommard Pommard Tavel Tavel Tavel cru Pommard Tavel 31 Cours BD/WEB - INT Evry degr 11 13 12 13 degr 13 11 12 13 degr 12

Synthèse

3 4 6 1 2 5 SELECT FROM WHERE GROUP BY HAVING ORDER BY : C 1 : C 2 k  A j > ° Projection de l’ensemble obtenu en (5) sur les A j , calcul des expressions, calcul des fonctions (appliquées aux groupes s’il y en Produit cartésien des relations R i Sélection des tuples de (1) respectant la condition C 1 Partitionnement de l’ensemble obtenu en (2) suivant les valeurs Sélection des groupes de (3) vérifiant C 2 Tri des tuples obtenus en (4) suivant les valeurs A l 32 Cours BD/WEB - INT Evry

Synthèse (2)

 Condition de recherche : » WHERE (sélection de tuples), HAVING (sélection de groupes) » » Compositions de conditions élémentaires (AND, OR, NOT) Évaluée à Vrai ou 33  Condition élémentaire : » » Évaluée à Vrai ou Faux Prédicat : – Comparaison : =, <, <=, >, >=, <>  Attribut/valeur  Attribut/attribut – Intervalle :BETWEEN – Chaîne : LIKE – Nullité : IS NULL – Appartenance : IN – Quantification : EXISTS, ANY, ALL

Exemple complet

"Donnez par ordre croissant le nom et la somme des quantités commandées par des buveurs bordelais, uniquement si chaque commande est d'une quantité strictement supérieure à 20 litres."

SELECT B.nom, Sum(C.qte) FROM Buveurs B, Commandes C WHERE B.num=C.nb AND B.ville = 'Bordeaux' GROUP BY B.num, B.nom HAVING MIN(C.qte) > 20 ORDER BY B.nom

Cours BD/WEB - INT Evry 34

 Insertion  Suppression  Modification

Mise à jour

Cours BD/WEB - INT Evry 35

 

Insertion

Insertion d’un seul tuple INSERT INTO Vins VALUES (100, 'Jurançon', 1979, 12) INSERT INTO Vins (num, cru) VALUES (200, 'Gamay') Insertion d’un ensemble de tuples CREATE TABLE BORDEAUX(num Integer, annee Integer, degre number(4,2)) INSERT INTO BORDEAUX SELECT num, annee, degre FROM Vins WHERE cru = 'Bordeaux' CREATE TABLE BORDEAUX AS SELECT num, annee, degre FROM Vins WHERE cru = 'Bordeaux' Cours BD/WEB - INT Evry 36

Suppression

   

"Supprimer tous les tuples de Vins"

DELETE FROM Vins ou TRUNCATE TABLE Vins

"Supprimer le vin de numéro 150"

DELETE FROM Vins WHERE num = 150

"Supprimer les vins de degré <9 ou >12"

DELETE FROM Vins WHERE degre < 9 OR degre > 12

"Supprimer les commandes passées par Belaïd"

DELETE FROM Commandes WHERE nb IN ( SELECT num FROM Buveurs WHERE nom= ‘Belaïd') Cours BD/WEB - INT Evry 37

Modification

« Le producteur 150 habite dans le sud ouest » UPDATE Producteurs SET region = ‘Sud Ouest' WHERE num = 150  « Les degrés des Gamays augmentent de 10 % »  UPDATE Vins SET degre = degre * 1.1

WHERE cru = 'Gamay' « Le buveur ‘Bac’ augmente ses commandes de 10 unités » UPDATE Commandes SET qte = qte + 10 WHERE nb IN ( SELECT num Cours BD/WEB - INT Evry FROM Buveurs WHERE nom='Bac') 38

Vues relationnelles

 Objectifs : » Indépendance logique » Adaptation aux applications » Intégration des applications existantes » Dynamique du schéma de la base » Confidentialité et sécurité » Décentralisation de l’administration d’une BD » Hétérogénéité des modèles Cours BD/WEB - INT Evry 39

Vues relationnelles

 Relation virtuelle » Ensemble de tuples n physiquement ’existe pas » Calculable à l ’exécution  Définie par une requête SQL  Utilisable comme une relation  Utilisable pour définir une autre vue 40 Cours BD/WEB - INT Evry

Exemples

Create view crus (nom) as select distinct cru from vins; Create view buveurs_beaujolais_paris (num, nom, qté_cdée) as select B. nb, B.nom, sum(qté) from buveurs B, cdes C, Vins V where B. nb = C.nb and C.nv=V.nv

and V.cru = ‘ Beaujolais’ and B.ville = ‘Paris’ group by B. nb, B.nom; 41 Cours BD/WEB - INT Evry

Manipulation de la BD au travers des vues

 Consultation » Toujours possible » Nom de la vue dans la clause from SELECT * FROM vins_beaujolais;  Mises à jour : » Rarement possible 42 Cours BD/WEB - INT Evry

Transactions

 Ensemble logique d'opérations élémentaires sur une BD (unité de traitements séquentiels).

 Une transaction fait passer la BD d'un état cohérent à un autre état cohérent Cours BD/WEB - INT Evry 43

Exemple de transaction

 T1: virement d'une somme N.

 T2: dépôt d'une somme M.

Transaction T1 DEBUT A := Lire(X) A := A - N Transaction T2 B := Lire(X) B := B + M X := Ecrire(B) X := Ecrire(A) A := Lire(Y) A := A + N Y := Ecrire (B) FIN FIN Cours BD/WEB - INT Evry 44

Propriétés d'une transaction (assurées par le SGBD)

 A  C  I  D  Atomicity  Consistency  Isolation  Durability Cours BD/WEB - INT Evry 45

Atomicity

 Une transaction est un ensemble de traitement qui doit être effectué dans sa totalité ou pas du tout (principe du tout ou rien).

 Mécanisme de validation (commit), système de reprise après panne.

46 Cours BD/WEB - INT Evry

Consistency

 Une transaction doit faire passer la BD d'un état cohérent à un autre état cohérent (respect des CI).

 Développeurs d'application.

Cours BD/WEB - INT Evry 47

Isolation

 Une transaction ne doit pas laisser voir ses modifications à une autre transaction tant qu'elle n'est pas validée (COMMIT).

 Contrôle de concurrence, sérialisation, verrouillage 48 Cours BD/WEB - INT Evry

Durability

 Les modifications réalisées par une transaction ne doivent pas être perdues une fois celle ci validée.

 La fin de transaction est un point de non retour, mécanisme de reprise.

Cours BD/WEB - INT Evry 49

Cours BD/WEB - INT Evry 50

Le WWW

Cours BD/WEB - INT Evry 51

Le système WWW

 architecture de base  les standards du Web  le stockage des documents  la protection des documents  extensibilité du Web  synthèse 52 Cours BD/WEB - INT Evry

Vocabulaire Système

 programme exécutable  processus "classique"  processus "multi-thread" Cours BD/WEB - INT Evry 53

Vocabulaire Système Programme exécutable

 un programme exécutable est un objet inerte qui est le résultat d’une compilation suivie d’une édition de liens Cours BD/WEB - INT Evry 54

Vocabulaire Système Processus "classique"

 objet dynamique correspondant à l’exécution d’un programme exécutable  un processus comporte: » le code du programme » les données du programme » le contexte d'exécution  chaque processus possède son propre espace d’adressage 55 Cours BD/WEB - INT Evry

Vocabulaire Système Processus "multi-thread"

 un processus définit un ensemble de ressources système  un thread est une activité correspondant à un flot d’exécution dans le contexte d’un processus  plusieurs thread peuvent s'exécuter en parallèle dans le contexte d'un processus, en partageant ses ressources 56 Cours BD/WEB - INT Evry

Vocabulaire Système Critique des thread

 avantages » limite le nombre de processus » optimise l'utilisation des ressources » autorise le parallélisme  inconvénients » synchronisation des différents thread » risque de "corruption" d'un thread par un autre thread 57 Cours BD/WEB - INT Evry

Utilisation des threads

 Implantation efficace d requêtes ’un serveur de  un thread pour servir une requête et non pas un processus  pour éviter le coût de lancement d ’un thread/processus on peut gérer un pool 58 Cours BD/WEB - INT Evry

WWW - Architecture de base

HTTP Client W3 Serveur W3 page HTML affichée Cours BD/WEB - INT Evry chaque page possède un URL pages HTML système de fichiers 59

WWW - Le client W3

 logiciel de consultation hypertexte » interprète et affiche le texte HTML » affiche le texte plat sans interprétation » visualise les images fixes gif, jpeg et x-bitmap  contient des plug-in ou des visualiseurs externes spécialisés pour divers formats » son, image animée, Postcript, ..

60 Cours BD/WEB - INT Evry

WWW - Le serveur W3

 fonctions assurées » gère les connexions des clients W3 » assure la protection des documents statiques (HTML, images, ..) » vérifie la validité des requêtes et les droits des clients » exécute les requêtes des clients – renvoyer un document statique – exécuter un programme externe 61 Cours BD/WEB - INT Evry

WWW - Le protocole HTTP

 HTTP est un protocole simple (GET, EXEC, HEAD, ...)  HTTP est un protocole sans session » la nouvelle version HTTP 1.1 permet de maintenir une connexion persistante  HTTP est un protocole peu sécurisé » évolution avec S-HTTP (Secure) du NCSA ou SSL (Secure Socket Layer) de Netscape 62 Cours BD/WEB - INT Evry

WWW - Stockage des documents

 système de fichiers de la machine serveur  arborescence de fichiers » par défaut, à partir du serveur W3 avec un répertoire racine fixé par l'administrateur » à partir d’un compte utilisateur avec le répertoire racine /public_html  un fichier de l’espace de stockage W3 doit être en lecture pour tous 63 Cours BD/WEB - INT Evry

WWW - Protection documents

 protections standard du système d’exploitation  protections propres au système Web pour accéder un document » accès avec un nom utilisateur et un mot de passe » accès à partir d’un domaine IP » accès depuis une machine particulière 64 Cours BD/WEB - INT Evry

WWW - Architecture étendue

client W3 HTTP serveur W3 CGI script CGI protocole dédié appli externe form W3 page W3 système de fichiers

Pages HTML statiques

BD ou système de fichiers

Pages HTML dynamiques

Cours BD/WEB - INT Evry 65

WWW - Les formulaires HTML

 un formulaire autorise l’interactivité entre le client et le serveur  un formulaire contient: » des zones de saisie avec des boutons, des listes de choix, ..

» un attribut action qui définit l'URL d'un programme exécutable sur le serveur » un attribut method qui définit le mode de transfert des données vers le programme 66 Cours BD/WEB - INT Evry

Exemple de formulaire

Donner une valeur pour att1 :
Cours BD/WEB - INT Evry 67

Programme CGI

 Interface CGI définit le moyen de passer des informations du client vers le prog. CGI et retour  un prog. CGI reçoit un seul argument de type chaine de caractères  cette chaine se décompose en couples attributs-valeurs  deux modes de transmission GET et POST Cours BD/WEB - INT Evry 68

Programmation CGI (suite)

 Programme CGI doit décoder la chaine pour extraire les paramètres  il renvoie son résultat sur sa sortie standard en ayant préalablement déclaré le type (content-type: text/html par exemple)  langages utilisés : Perl souvent, mais on peut choisir n'importe lequel 69 Cours BD/WEB - INT Evry

Exemple de CGI en Perl

#!/usr/bin/perl -w use CGI qw (:standard); $ior = param('IOR'); print header; print "\n"; print "Résultat décodage IOR\n"; print "

IOR décodé


"; print "

\n"; open(FILE, "-|") || exec "/inf/QOS_CORBA/Olivier/bin/iordump", "-f", $ior; while ($LIG=) { print "$LIG
\n"; } print "

\n"; close(FILE); print "\n"; print "\n"; 70 Cours BD/WEB - INT Evry

WWW - Programmation CGI

 communication serveur W3 <->script CGI: » un ensemble de variables d’environnement » l’entrée standard du processus CGI en exécution » la sortie standard du processus CGI en exécution  le problème de la sécurité » exécution du script avec le minimum de droits » éviter l'accessibilité du code source du script » vérifier les données en provenance du formulaire 71 Cours BD/WEB - INT Evry

WWW - Formulaires et CGI

 principe de fonctionnement » l’utilisateur remplit un formulaire » le formulaire est envoyé au serveur W3 » le serveur positionne les variables d'env. CGI » le serveur lance l'exécution du script CGI et lui passe le contenu du formulaire » le script CGI fabrique le document et le renvoie au serveur W3 sur sa sortie standard » le serveur renvoie le document au client 72 Cours BD/WEB - INT Evry

WWW - Formulaires et CGI

(2)  contenu d'un formulaire » chaîne de caractères représentant une liste d'éléments de la forme (champ,valeur)  méthode GET » » la chaîne est ajoutée à l'URL désignant le script elle est mise dans la var. d'env. QUERY_STRING  méthode POST » » la chaîne est envoyée dans une séquence http spéciale elle est transmise au script sur son entrée standard 73 Cours BD/WEB - INT Evry

WWW - Problème du CGI

Client 1 Process 1 Client 2 Client 3 Process du serveur C G I

Serveur W3

Process 1 Process 1

Scripts CGI

74 Cours BD/WEB - INT Evry

WWW - Solution des API

Client 1 Client 2

Serveur W3

Process du serveur API Thread 1 ensemble de fonctions Thread 2 Thread 3 Client 3 Cours BD/WEB - INT Evry

les scripts CGI deviennent des fonctions d'une librairie dynamique DLL, exécutées dans des thread du process serveur W3

75

FastCGI

 Genre de script CGI persistant (démon)  script décomposé en 3 parties : » initialisation : une fois » corps : à chaque requête » terminaison : une fois  initialisation doit inclure le code coûteux (connexion à une BD, …)  bien adapté à un accès BD, mais une fois lancé est persistant 76 Cours BD/WEB - INT Evry

WWW - Intérêts du Web

 client universel  facilité d'emploi  standards ouverts  intégration des autres services Internet  extensibilité du système  faibles coûts logiciel et réseau  utilisation au sein d'une entreprise (Intranet) 77 Cours BD/WEB - INT Evry

WWW - Limites du Web

 les performances » le réseau Internet => augmenter le débit » les scripts CGI => solution FastCGI  la sécurité » HTTP => version sécurisée S-HTTP » niveau TCP/IP => solution SSL 78 Cours BD/WEB - INT Evry

WWW - Limites du Web

(2)  la gestion des transactions » pas possible avec HTTP 1.0

– ne travaille pas en mode session – une solution est d'utiliser des "cookies" » la version HTTP 1.1

– intègre la notion de connexion persistante (au niveau TCP)  la construction d’interfaces utilisateur » limitation de HTML dans sa version actuelle » utilisation de Java 79 Cours BD/WEB - INT Evry

WWW - Evolution du Web

 initialement » accès à des informations – réparties sur un réseau – sous la forme de documents hypermédia  aujourd'hui » développement et exécution d'applications – client/serveur, hétérogènes – au sein d'une même organisation (

Intranet

) 80 Cours BD/WEB - INT Evry

Architecture des passerelles BD/WEB

Cours BD/WEB - INT Evry 81

Interfacer le Web et les BD

 Principes des passerelles  Exemples des solutions Microsoft » IDC » ASP  Passerelle Web/Oracle INT  Solutions Java (applets, servlets, JSP) 82 Cours BD/WEB - INT Evry

Principes des passerelles

Cours BD/WEB - INT Evry 83

Principes des passerelles

 Passerelles mono requête  Passerelles multi requêtes (transactionnelles) Cours BD/WEB - INT Evry 84

Fonctionnalités à assurer

 (1) décodage de la requête http (passage var. environnements vers SQL)  (2) exécution de la requête sur le SGBD  (3) formatage HTML du résultat Cours BD/WEB - INT Evry 85

Exécution d ’une requête SQL

 Programme écrit avec une interface BD » solution dépendante du SGBD » solution indépendante du SGBD (ODBC, JDBC ou DBI pour Perl)  Langages de programmation utilisables » classiques : C, C++, Ada, … si embedded SQL » Perl (avec DBI) 86 Cours BD/WEB - INT Evry

Habillage HTML du résultat

 Solution générique (et automatisable) : » select : tableau HTML » autre requête : chaine de caractères  Solution spécifique : codage spécifique pour chaque requête – dans la passerelle (une passerelle / requête !) – dans le SGBD (procédure stockée)  Solution intermédiaire : » paramétrisation du résultat (formulaire de mise à jour, parcours hypertexte d ’une BD ,…) Cours BD/WEB - INT Evry 87

Accès à la BD (html pur)

Serveur HTTP CGI url Client browser résultat html query string rés. HTML Passerelle SQL résultat SGBD 88 Cours BD/WEB - INT Evry

Exemple HTML pur

Donner un cru :

89 Cours BD/WEB - INT Evry

Accès à la BD (script client)

url Serveur HTTP query string Passerelle Client browser résultat html rés. HTML SQL résultat SGBD 90 Cours BD/WEB - INT Evry

Exemple HTML avec Javascript

Donner un cru :

onClick="f1.sqlstatement.value+=f1.vcru.value; f1.submit();">

Cours BD/WEB - INT Evry 91

Accès à la BD (hors http)

SGBD protocole spécifique Client browser + programme Java, Tcl, ...

protocole spécifique : JDBC, IIOP (CORBA) 92 Cours BD/WEB - INT Evry

Qui fait quoi ?

(1) (2) (3) HTML pur script client cgi spécifique SGBD passerelle ou SGBD client SGBD passerelle ou SGBD hors http SGBD client 93 Cours BD/WEB - INT Evry

Variations

 dépendance / indépendance par rapport au SGBD (natif ou ODBC)  langage de requêtes supporté (SQL ou un sous-ensemble, statique vs dynamique)  formattage du résultat (personnalisable ou non)  performances 94 Cours BD/WEB - INT Evry

Performances

 CGI vers propriétaire) NSAPI, ISAPI (mais  diminuer le nombre de processus (si grand nombre de clients : passerelle multithread Cours BD/WEB - INT Evry 95

Transactions Rappels

 transaction = programme BD (séquence de lire, écrire)  propriétés = ACID – A : Atomicity – C : consistency – I : Isolation – D : Durability 96 Cours BD/WEB - INT Evry

Exemples d’applis transactionnelles

 commandes on-line (vente par correspondance, train, avion, ...)  banque  assurance  une bonne partie du e-business!!!!

Cours BD/WEB - INT Evry 97

Transactions et Web

 Transaction = séquence d’invocations url (gestion du contexte par le web?)  Transaction = propriétés ACID (assurées par le SGBD)  HTTP = pas de support de session – gérer le contexte côté client (cookies) – simuler des sessions http (web transactionnel) – supporter un langage avec un run-time côté serveur (PHP, ASP, JSP, ...) 98 Cours BD/WEB - INT Evry

Transactions et cookies

Client browser Serveur http cgi 1 1’ c1 2 c1 2’ c1, c2 3 fin c1, c2 5’ del(c1, c2) 1 1’ c1 2’ c1, c2 3 fin c1, c2 5’ del(c1, c2) 1 : premier accès 1’ : retour du cookie c1 2 : autre accès avec transport du cookie c1 2’ : retour des cookies c1, c2 3 : fin transaction avec transport c1, c2 4 : construction de la transaction et exécution sur le SGBD 5’ : suppression des cookies 4 sql(c1, c2) 4’ ok SGBD Cours BD/WEB - INT Evry 99

Transaction et cookies (2)

 Contexte est géré chez le client (cookies)  avantages : – simplicité de la mise en œuvre – accès en maj de la BD se fait en une fois à la fin (pas de ressources bloquées) – si pas de terminaison de la transaction par l ’utilisateur, rien à faire 100 Cours BD/WEB - INT Evry

Transaction et cookies (3)

 Inconvénients – pas vraiment transactionnel – fonctionnalité limitée – beaucoup de cgi à écrire (sauf programme de maj générique qui prenne une séquence d ’instructions SQL en entrée)  Problèmes des cookies – global à l ’utilisateur (pas de différenciation entre fenêtres) – global à une url (pas deux transactions en même temps sur le même site) 101 Cours BD/WEB - INT Evry

Passerelle transactionnelle

Client browser Serveur http cgi démon passerelle SGBD Cours BD/WEB - INT Evry 102

Passerelle transactionnelle principes

 Contexte géré par un démon côté serveur  besoin d ’un identifiant de transaction stocké côté client (cookie ou variable selon client) et côté démon (dans une table)  passerelle ne traite pas une seule requête mais toute une transaction (plusieurs requêtes) Cours BD/WEB - INT Evry 103

Passerelle transactionnelle Fonctionnement (1)

 1 : demande de création de transaction (implicite ou explicite) – allocation d ’un idf par le démon, maj de la table des transactions, lancement d ’une passerelle, renvoi de l ’idl au client (cookie ou variable)  2 : demande d ’opérations sur la BD – routage de la demande par le démon sur la bonne passerelle en utilisant l ’idf et sa table 104 Cours BD/WEB - INT Evry

Passerelle transactionnelle Fonctionnement (2)

 3 : terminaison de la transaction – implicite : plantage, timeout – explicite : idem 2 + maj de la table des transactions, annulation de l ’idf côté client et arrêt de la passerelle Cours BD/WEB - INT Evry 105

Passerelle transactionnelle Bilan

 Avantages – vraiment transactionnel – solution générique  Inconvénients – architecture complexe – blocage des ressources – nécessité de détecter un « abandon » de l ’utilisateur (timeout) 106 Cours BD/WEB - INT Evry

Support d ’un langage

 Offrir un langage de programmation intégré au Web (possibilité de faire des appels depuis une page Web, support par le serveur HTTP)  run-time du langage offre un support de session (donc de transactions)  PHP, servlet - JSP, ASP, XSP (Cocoon)  voir partie sur Java pour plus de détails 107 Cours BD/WEB - INT Evry

Cours BD/WEB - INT Evry 108

Passerelles BD/WEB

Quelques solutions industrielles Cours BD/WEB - INT Evry 109

Solutions industrielles

 Solutions Microsoft » IDC » ASP  Passerelle Web/Oracle INT  Solution Java » appels, servlets, JSP 110 Cours BD/WEB - INT Evry

Web/BD La solution Microsoft

 Internet Information Server (

IIS

) » serveur W3 de Microsoft » fourni avec Windows NT 4.0

» possède une API propriétaire: ISAPI  Internet Database Connector (

IDC

) » un composant de IIS sous la forme d'une librairie dynamique httpodbc.dll

» s’appuie sur ODBC pour accéder une BD SQL 111 Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Architecture

.

htx

client W3 HTTP IIS

IDC .idc

ISAPI SQL

(via API ODBC)

ODBC pilote SQL Server SQL

(via API SQL Server)

SQL Server BD Cours BD/WEB - INT Evry 112

Web/BD - IIS + IDC Contenu d’un fichier .idc

 nom de la source de données ODBC  nom utilisateur et mot de passe pour la connexion à la source de données  accès BD en interrogation ou maj via: » une requête SQL » un appel de procédure stockée  référence vers le fichier .htx

113 Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Contenu d’un fichier .htx

 code HTML étendu avec des balises spécifiques à IDC délimitées par <

%%

> » <

%

begindetail

%

>, <

%

enddetail

%

> » <

%

if

%

>, <

%

else

%

>, <

%

endif

%

> » <

%

nom de variable

%

>  modèle de présentation de la page Web fabriquée à partir des données extraites de la base de données 114 Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Fonctionnement

 le client W3 invoque un fichier .idc

» soit comme un lien HREF » soit comme un script de formulaire  réception de l’URL par IIS  IIS appelle la librairie dynamique IDC  IDC utilise le fichier .idc pour: » se connecter à la source de données ODBC » lui adresser la requête SQL 115 Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Fonctionnement IIS+IDC

(2)  ODBC exécute la requête SQL et renvoie les données de la BD à IDC  IDC récupère les données de la BD  IDC met les données au format HTML en utilisant le fichier .htx

 IDC renvoie la page Web au serveur IIS  IIS renvoie la page Web au client W3 116 Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Formulaire avec un script .idc

     

Donnez salaire:

Cours BD/WEB - INT Evry 117

Web/BD - IIS + IDC Un exemple de fichier .idc

 Datasource: personnel  Username: scott  Template: bigsal.htx

 SQLStatement: » + select nom, sal » +from personnel » +where sal > %sal% 118 Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Un exemple de fichier .htx

         Gros salaires

<%begindetail%> <%if CurrentRecord eq 0%>

» Voici les gros salaires >

<%idc.sal%>


<%endif%> <%nom%><%sal%> <%enddetail%>

Cours BD/WEB - INT Evry 119

Web/BD - IIS + IDC Un exemple de fichier .htx

(2)      

<%if CurrentRecord eq 0%>

» Désolé, pas de salaire sup. à

<%idc.sal%>

<%else%>

»

Page Web créée par IDC

<%endif%>

120 Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Critique

 avantages » relativement simple à mettre en oeuvre » plus performant que le CGI » ouverture vers les SGBD ODBC  inconvénients » solution propriétaire (IIS et ISAPI) » pas de gestion de transactions » pas d'outil de développement

(sauf IIS Add-In)

121 Cours BD/WEB - INT Evry

Cours BD/WEB - INT Evry 122

Interface BD/Web les ASP (Microsoft)

 Solution Microsoft la plus complète et la plus puissante  ASP programmes s ’exécutant côté serveur (généralise CGI et ISAPI)  permet l et d ’utilisation de contrôles ActiveX ’applets JAVA  interface BD à travers un composant spécifique ADO 123 Cours BD/WEB - INT Evry

Client Browser Décodage HTTP

Principe ASP

Serveur Page demandée Encodage HTTP Page active ASP Ajout enveloppe HTTP Vbscript ou Jscript Données Page dynamique 124 Cours BD/WEB - INT Evry

Architecture générale

Internet IIS Appli. ISAPI Appli. CGI Scripts Perl, AWK Interprète VBscript DLL Interface ASP Composants Active Server SSinclude Interprète Jscript Composant ADO Pilote ODBC Composants personnalisés Données Pages actives (fichiers ASP) Cours BD/WEB - INT Evry 125

Plan d ’une page ASP

… Sections HTML normales <% …………….. %> Script serveur (création page) Script client (interprétation page) Script serveur (procédures, fonctions)

Cours BD/WEB - INT Evry SSI (script ou HTML dans fichier séparé) HTML normal 126

Client

Le modèle objet d ’ASP

Objet REQUEST Collections : Cookies Form QueryString ServerVariables ClientCertificate Serveur Cours BD/WEB - INT Evry Objet RESPONSE Collection : Cookies (propriétés et méthodes) Objet SERVER (méthodes) 127 Objet APPLICATION Objet SESSION (propriétés et méthodes) (propriétés et méthodes)

Composants ASP standards

 Content Linking (liste de liens)  Browser Capabilities (caractéristiques du navigateur)  Ad Rotator (gestion de flashes publicitaires)  Active Database (accès aux BD) 128 Cours BD/WEB - INT Evry

Accès à la BD (ADO)

Active Server Pages Composant Active Database ADO Pilote ODBC Source de données Interface du fournisseur d ’accès Cours BD/WEB - INT Evry 129

Le modèle objet ADO

Objet Connection Objet RecordSet Collection Fields Objet Field Collection Properties Objet Property Objet Command Collection Parameters Objet Parameter Collection Properties Objet Property Collection Properties Objet Property Cours BD/WEB - INT Evry 130 Collection Errors Objet Error

Exemple de transaction

Set oConn = Server.CreateObject(« ADODB.Connection ») oConn.Open « Contacts » oConn.BeginTrans

oConn.Execute « DELETE * FROM Contact WHERE State=‘ LA ’ » Nberror = oConn.Errors.Count

oConn.Execute « DELETE * FROM Names WHERE State=‘ LA ’ » Nberror=Nberror + oConn.Errors.Count

if Nberror = 0 Then oConn.CommitTrans

Else oConn.RollbackTrans

End If oConn.Close

Set Oconn = Nothing Cours BD/WEB - INT Evry 131

Exemple de fichier ASP

// ATTENTION LES COMMENTAIRES RAJOUTES NE SONT PAS CONFORMES A LA SYNTAXE ASP // SI ON VEUT EXECUTER LE FICHIER DANS UN CONTEXTE ASP IL FAUT ENLEVER // TOUTES LES LIGNES COMMENCANT PAR // Logiciel // RECUPERATION DANS LA QUERYSTRING DES VALEURS DES VARIABLES PARAM // ET DATA (SI ELLES EXISTENT) <% Param = Request.QueryString("Param") Data = Request.QueryString("Data") %> // TEST DE L'EXISTENCE D'UNE SESSION WIZ_conn // SI OUI ON POSITIONNE conn SINON ON EN CREE UNE NOUVELLE <% If IsObject(Session("WIZ_conn")) Then Set conn = Session("WIZ_conn") Else Set conn = Server.CreateObject("ADODB.Connection") conn.open "WIZ","","" Set Session("WIZ_conn") = conn %> Cours BD/WEB - INT Evry 132

Exemple ASP (2)

// PREPARATION DE LA REQUETE SQL A EXECUTER <% sql = "SELECT * FROM [Logiciel]" If cstr(Param) <> "" And cstr(Data) <> "" Then sql = sql & " WHERE [" & cstr(Param) & "] = " & cstr(Data) End If // ON CREE UN OBJET RECORDSET QUI VA PERMETTRE D'ACCEDER AU RESULTAT // DE LA REQUETE Set rs = Server.CreateObject("ADODB.Recordset") // ON LANCE LA REQUETE EN PASSANT EN ARGUMENTS LA CHAINE REPRESENTANT // LA REQUETE ET L'OBJET SESSION rs.Open sql, conn, 3, 3 %> // AFFICHAGE DU RESULTAT SOUS FORME DE TABLE

133 Cours BD/WEB - INT Evry

Exemple ASP (3)

// ON SE POSITIONNE SUR LE PREMIER ELEMENT DU RESULTAT <% On Error Resume Next rs.MoveFirst

// TANT QUE IL RESTE DES TUPLES A TRAITER do while Not rs.eof

%> // TRAITEMENT D'UN TUPLE (AFFICHAGE EN FORMAT HTML DE CHACUN DES ATTRIBUTS)

// TUPLE SUIVANT <% rs.MoveNext

// FIN TANT QUE loop%>

Logiciel
CléLogiciel> NomLogiciel> PrixVente> PrixAchat> Stock> Photo> Détails>
<%=Server.HTMLEncode(rs.Fields("CléLogiciel").Value)%>
<%=Server.HTMLEncode(rs.Fields("NomLogiciel").Value)%>
<%=Server.HTMLEncode(rs.Fields("PrixVente").Value)%>
<%=Server.HTMLEncode(rs.Fields("PrixAchat").Value)%>
<%=Server.HTMLEncode(rs.Fields("Stock").Value)%>

<><%=Server.HTMLEncode(rs.Fields("Détails").Value)%>
Cours BD/WEB - INT Evry 134

Bibliographie

 Interface entre web et bases de données sous windows NT, A. Homer, D. Gill, S. Jakab, Eyrolles 1998  http://www.activeserverpages.com

 http://www.asphole.com

 http://www.15seconds.com

135 Cours BD/WEB - INT Evry

Cours BD/WEB - INT Evry 136

Passerelle BD/Web INT

 Passerelle « mono-requête »  dédiée Oracle (CGI écrit en Pro*C)  « générique » pour l ’affichage des résultats » tout se fait sur le client (variables à positionner dans le formulaire) » pas de travail à faire côté serveur 137 Cours BD/WEB - INT Evry

Programmation de la passerelle

 Écriture de formulaires HTML devant déclarer et positionner des variables : » obligatoires : uid (chaine de connexion Oracle), mode (NOR le plus simple), sqlstatement (instruction SQL à exécuter, peut être vide) » optionnelles : title par exemple » des contraintes entre les variables (une variable ne peut être positionnée si une autre ne l Cours BD/WEB - INT Evry ’est pas également) 138

Exemple de formulaire

GENERATION D ’UN FORMULAIRE D ’INSERTION DANS LA RELATION VINS

139 Cours BD/WEB - INT Evry

Les modes

 NORmal : tableau  INSertion : formulaire d ’insertion  MAJ : formulaire de maj  SUPpression : formulaire de suppression  QBE : formulaire d ’interrogation à la QBE  HYPertexte : permet une navigation hypertexte dans les clés étangères et primaires  COPy : menu construit par SELECT 140 Cours BD/WEB - INT Evry

Support des URLs

 Stockage des urls dans la BD (par exemple des liens sur des fichiers images)  il faut que la passerelle traite les urls (chaine de caractères) différemment  nom des attributs correspondants à des urls ont un préfixe fixe (URL_ ou IMG_) 141 Cours BD/WEB - INT Evry

Générateur d ’application

Source XML Description de l ’application générateur Cours BD/WEB - INT Evry 142 Formulaires HTML à personnaliser

Exemple de source XML

titi/toto@MICA Mon Appli VINS 143 Cours BD/WEB - INT Evry

Cours BD/WEB - INT Evry 144

Solution Java

Cours BD/WEB - INT Evry 145

Java et le Web

 Notion de JVM se prête bien au Web  grande diffusion du langage  JDBC (API standard pour les SGBDR)  Applets  servlets  Java Server Pages 146 Cours BD/WEB - INT Evry

Java - Java et le Web

 langage pour le client W3 » applet = "petite application" Java compilée – téléchargée à partir d'un serveur W3 – exécution sécurisée par la JVM du client  langage pour le serveur W3 » servlet = application Java compilée – résidant sur le serveur – exécution par la JVM du serveur 147 Cours BD/WEB - INT Evry

JDBC

   API Java pour manipuler des relations via SQL (dans des fichiers locaux ou via un SGBD) Une seule API uniforme (même niveau que SQL CLI de X/open) Indépendance / SGBD cible (via des pilotes)  Code portable de bout en bout  Pas forcément construit au dessus de ODBC 148

Pilotes JDBC

 JDBC non supporté en natif par les SGBD du commerce (ou les systèmes de fichiers)  Transformations des appels JDBC en appels natifs   Un pilote pour chaque SGBD 4 catégories de pilotes en fonctions de : » La présence ou non de pilote SGBD (non java) sur le client » Protocole de communication entre le client Java et le serveur Cours BD/WEB - INT Evry 149

Les pilotes (suite)

JDBC NetDriver (Java) Protocole d’accès au middleware JDBC Application Java Commutateur JDBC (Driver Manager) Pont JDBC-ODBC (Java) Driver ODBC (c/c++) Driver Java ou Java/C Protocole d'accès propriétaire spécifiques aux SGBDR API JDBC Cours BD/WEB - INT Evry 150

Principes de programmation

 Quel que soit le gestionnaire de BD considéré, les phases de l’interaction sont identiques : » » » » » » Charger le

driver

Connexion à la base Création d'un

statement

Exécution de la requête Récupération des résultats Gestion transactionnelle (commit/abort) Cours BD/WEB - INT Evry 151

Classes et interfaces du "paquage"java.sql

Driver Statement PreparedStatement Connection CallableStatement ResultSet ResultSetMetaData DatabaseMetaData Java.lang.Object

Java.util.Date

DriverManager DriverPropertyInfo Date Time Cours BD/WEB - INT Evry TimeStamp 152 Types

Connexion JDBC

  Classe java.sql.Connection

URL d’une source de données jdbc:: jdbc:oracle:oci8:@ jdbc:oracle:thin:@mica:1521:ENSE jdbc:msql//athens.com:4333/db_test Cours BD/WEB - INT Evry 153

Connexion à la base (suite)

Class.forName("oracle.jdbc.driver.OracleDriver"); chargement dynamique de la classe implémentant le pilote Oracle String dburl = "jdbc:oracle:thin:@mica:1521:ENSE"; construction de l’url pour Oracle INT Connection

conn =

DriverManager.getConnection

(dburl, "toto", "titi"); connexion à l’url avec un (user, passwd)=(toto, titi) 154 Cours BD/WEB - INT Evry

Création d'un Statement

 Un objet Statement symbolise une instruction SQL   3 types de

statement

: » Statement : requêtes simples » PreparedStatement : requêtes précompilées » CallableStatement : procédures stockées Création d'un

Statement

: Statement stmt = conn.

createStatement

(); Cours BD/WEB - INT Evry 155

Execution d'une requête (1/2)

 3 types d'executions : » executeQuery : pour les requêtes qui retournent un ensemble (SELECT) » » executeUpdate : pour les requêtes INSERT , UPDATE , DELETE , CREATE TABLE et DROP TABLE execute : pour quelques cas rares (procédures stockées) Cours BD/WEB - INT Evry 156

Execution d'une requête (2/2)

 Execution de la requête : String myQuery = "SELECT nom, adresse " + "FROM client " + "WHERE (nom=’L%') " + "ORDER BY nom"; ResultSet rs = stmt.

executeQuery

(myQuery); Cours BD/WEB - INT Evry 157

Récupération des résultats (1/2)

     executeQuery () renvoit un ResultSet Le RS se parcourt itérativement

ligne

par

ligne

Les colonnes sont référencées par leur numéro ou par leur nom L'accès aux valeurs des colonnes se fait par les méthodes » getXXX() où XXX représente le type de l'objet » ou bien par un getObject suivi d’une conversion explicite Pour les types longs, on peut utiliser des

streams

.

158 Cours BD/WEB - INT Evry

Récupération des résultats (2/2)

java.sql.Statement stmt = conn.createStatement();

ResultSet rs

Table1"); = stmt.executeQuery("SELECT a, b, c FROM while (

rs.next

()) { // print the values for the current row.

int i =

rs.getInt("a")

; String s =

rs.getString("b")

; byte b[] =

rs.getBytes(3)

; System.out.println("ROW = " + i + " " + s + " " + b[0]); } 159 Cours BD/WEB - INT Evry

Exemple de SQL dynamique

Class Employe { ...

Public static int updateEmploye(int num, String nom) throws SQLException, ClassNotFoundException { try { Class.forName("oracle.jdbc.driver.OracleDriver"); String dburl "jdbc:oracle:thin:@mica:1521:ENSE"); Connection conn = DriverManager.getConnection(dburl, "toto", "titi"); conn.setAutoCommit(false); PreparedStatement pstmt = conn.prepareStatement("UPDATE Employe SET salary=?, name=?, WHERE numemp=?"); } PSMT.setNull(1); psmt.setString(2, nom); psmt.setInt(3, num); int nbLignesModifiees = psmt.executeUpdate(); if (nbLignesModifiees == 1) conn.commit(); else conn.rollback(); } catch (Exception e) {e.printStackTrace();} Cours BD/WEB - INT Evry 160

Accès aux méta-données

  La méthode getMetaData() données d'un ResultSet . permet d'obtenir les méta Elle renvoit des ResultSetMetaData .

 On peut connaitre : » » Le nombre de colonne : getColumnCount() Le nom d'une colonne : getColumnName(int col) » » Le type d'une colonne : getColumnType(int col) ...

161 Cours BD/WEB - INT Evry

Exemple de MetaData

} Class HTMLResultSet { private ResultSet rs; public HTMLResultSet (ResultSet rs){this.rs=rs;} public String toString() { StringBuffer out = new StringBuffer(); out.append("

"); ResultSetMetaData rsmd=rs.getMetaData(); int numcols=rsmd.getColumnCount(); out.append(""); for (int i=0;i").append(rsmd.getColumnName(i)); } out.append(""); ...

Cours BD/WEB - INT Evry 162

Correspondance de type SQL/Java

Type SQL numeric integer float char, varchar date Type Java Java.Math.BigDecimal

Integer Type Java retourné par getObject() Java.Math.BigDecimal

Integer Méthode recommandée au lieu de getObject() Java.Math.BigDecimal

GetBigDecimal() Integer getInt() Double String Java.sql.Date

Double String Java.sql.Date

Double getDoubel() String getString() Java.sql.Date getDate() 163 Cours BD/WEB - INT Evry

JDBC et la sécurité

 Respecte les principes sécurité de Java  application et trusted applets : » accès bases locales et serveur BD  Untrusted applets ou untrusted JDBC driver » connexion seulement au site de chargement 164 Cours BD/WEB - INT Evry

Evolution de JDBC

 JDBC 1.0 (janvier 1996)  JDBC 2.0 (Mars 1998)  JDBC 2.1 (2000)  Extensions de JDBC 2.x

» parcours avant/arrière d’un ResultSet » » » » » mise à jour depuis un ResultSet batch de plusieurs ordres SQL support des types SQL3 validation 2 phases via XA notion de DataSource et utilisation de JNDI » pool de connexion, cache sur le client Cours BD/WEB - INT Evry 165

SQLJ

 Initiative de plusieurs éditeurs (Oracle, IBM, ...)  Offre une interface de plus haut niveau que JDBC (moins de code à écrire)  Peut se mixer avec du JDBC (pas de SQL dynamique p.e dans SQLJ)  SQLJ compilé en JDBC 166 Cours BD/WEB - INT Evry

Exemples SQLJ

public static void updateDuration(String projName, int numDays) throws SQLException { #sql {UPDATE projects SET duration=duration+:numDays WHERE id=:projName}; } #sql {COMMIT}; public static voidlistOpenProjects() throws SQLException { ProjIter projs=null; // déclaration de l'instance d'itérateur #sqlprojs={SELECT start_date, name FROM projects }; while(projs.next()) { } System.out.println("Projet "+ projs.name() + "commence le "+projs.start_date()); projs.close(); } Cours BD/WEB - INT Evry 167

Applets

 Programme Java pouvant être téléchargé depuis un serveur Web et exécuté dans le contexte d'un navigateur  attention à ce que la version de la JVM du navigateur soit compatible avec celle du développement de l'applet 168 Cours BD/WEB - INT Evry

Applet (exemple)

Hello.html

Test d'applet

Voici le test : HelloWorld.java

import java.applet.Applet; } import java.awt.Graphics; public class HelloWorld extends Applet { public void paint (Graphics g) { g.DrawString("HelloWorld!", 50, 25); } Cours BD/WEB - INT Evry 169

Servlets

 Servlet 2.2 (http://java.sun.com/servlet)  Tomcat implantation pour Apache  équivalent du CGI pour Java  extensions au CGI (session, bufferisation, redirection/chainage) Cours BD/WEB - INT Evry 170

Architecture servlet

Client navigateur Web Serveur HTTP Servlet container servlet1 servlet2 Container gère les servlets (activation, désactivation) Cours BD/WEB - INT Evry 171

Modèle d ’objets servlet

Objet request getParameter getAttribute getHeaders getCookies Cours BD/WEB - INT Evry Objet session getAttribute servlet1 172 Objet Response setBufferSize setHeader setRedirect

JSP

 JSP 1.1 (http://java.sun.com/jsp)  Tomcat implantation pour Apache  inclusion de script dans des pages HTML  équivalent de ASP, PHP pour Java  est compilé sous forme de servlet  portabilité de Java  extensibilité du langage de script serveur via les librairies de tag 173 Cours BD/WEB - INT Evry

Exemple de page JSP

<%@ page language=« java » import=« java.util.* » %>

Bienvenue

Jour :

  • Jour :

    <%= clock.getDayOfMonth() %>

  • Annee :

    <%= clock.getYear() %>

<%-- Test pour AM ou PM --%> <%! Int time = Calendar.getInstance().get(Calendar.AM_PM); %> <% if (time == Calendar.AM) { %>

Good Morning

<% } else { %>

Good Afternoon

<% } %> <@ include file=« copyright.html » %>

Cours BD/WEB - INT Evry 174

Composants d ’une page JSP (1)

 JSP actions (ou tags) : permet d ’appeler des beans (syntaxe XML)  directives : traitées par le moteur JSP lors de la compilation de la page en servlet (include, import, ...)  déclarations : comme en Java 175 Cours BD/WEB - INT Evry

Composants d ’une page JSP (2)

 expressions : variables ou constantes intégrées dans la page résultat  scriplets : blocs de code Java intégrés dans une page JSP  commentaires Cours BD/WEB - INT Evry 176

Tags personnalisés

 On peut ajouter ses propres tags pour simplifier l ’écriture de pages JSP  librairies de tags  mécanisme de définition de nouveaux tags (assez complexe) Cours BD/WEB - INT Evry 177

Exemple d ’utilisation de tags

<%@ taglib uri=« http://acme.com/taglibs/simpleDB.tld »prefix=« x » %> select num, cru from vins

Les 10 premiers vins sont :

NumeroCru

Cours BD/WEB - INT Evry 178

Exemple (suite)

 Définition d ’un tag queryBlock lui même composé d ’autres tags (queryStatement, queryCreateRows)  permet de cacher JDBC au codeur de la page  un tag est défini par un descipteur l (document XML) + une classe Java ’implémentant 179 Cours BD/WEB - INT Evry

Cours BD/WEB - INT Evry 180

Evolution du WWW

Le monde XML Cours BD/WEB - INT Evry 181

De SGML à XML

    SGML » Inventé par Charles Goldfarb, juriste chez IBM.

» Du balisage typographique au balisage logique.

HTML » Inventé par Tim Berners-Lee comme langage de description des pages du Web.

» Concept d’ancre : hypertexte.

HyTime » Langage très ambitieux pour la description des liens intra et inter documents.

XML » Une synthèse de SGML, HTML et HyTime.

Cours BD/WEB - INT Evry 182

Le monde XML (ou plutôt un extrait !)

XML MŽ tadescription Description RDF XML Schema HiŽ rarchique Hypertextuelle XML XLink XPointer XPath Transformation PrŽ sentation XSLT XSL Programmation (API) SAX DOM Interrogation SgmlQL XML-QL 183 Cours BD/WEB - INT Evry

Qu'est XML?

 E

x

tensible

M

arkup

L

anguage  une syntaxe pour des documents  un méta-langage de balisage  une façon de représenter de l'information  n'est pas réservé aux pages Web 184 Cours BD/WEB - INT Evry

XML est un méta-langage

 Permet de se définir ses propres "tags"  les "tags" peuvent être définis dans une grammaire associée au document (DTD et bientôt schémas)  permet de définir des langages de balises spécialisés (MathML, MusicML, XHTML, ...) 185 Cours BD/WEB - INT Evry

XML ne décrit pas la présentation

 Un document XML est un arbre  les noeuds de l'arbre sont des éléments qui peuvent être qualifiés par des attributs  la présentation est définie à l'extérieur du document, soit via CSS, soit via XSL 186 Cours BD/WEB - INT Evry

Pourquoi utiliser XML

 Langages de balisages spécialisés  données auto-descriptives  échange de données entre applications  publication de documents Cours BD/WEB - INT Evry 187

Un exemple de document

Itinéraires skieurs dans la Vallée de la Clarée

– par Jean-Gabriel Ravary Le Polygraphe,

éditeur

1991

Vallon des Muandes

Vallon situé à l’est du refuge des Drayères.

Le vallon le plus utilisé pour la traversée sur la Vallée Etroite. Ce vallon est également accessible du refuge Laval.

Col de Névache (2 794 m) ** n° 1

188

Le guide “Itinéraires skieurs” en XML (1)

Itinéraires skieurs dans la vallée de la Clarée Jean-Gabriel Ravary Le Polygraphe 1991 Vallon des Muandes Vallon situé à l’est du refuge des Drayères. Le vallon le plus utilisé pour la traversée sur la Vallée Etroite. Ce vallon est également accessible du refuge Laval. ...

Itinéraires

...

189 Cours BD/WEB - INT Evry

Le guide “Itinéraires skieurs” en XML (2)

Col de Névache2794** 1 S’élever au-dessus du refuge des Drayères en direction est. Suivre la rive droite du torrent de Brune puis s’engager sur le flanc droit du ravin des Muandes que l’on quitte vers 2500 m pour rejoindre le col situé au nord. Descente possible sur Valmeinier. Départ assez raide. Pointe de Névache2892*** 2 Du col de Névache , suivre la ligne de crête qui mène à la pointe de Névache. Attention : corniches possibles. Crampons utiles au printemps. Cours BD/WEB - INT Evry 190

DTD “Itinéraires Skieurs”

191 Cours BD/WEB - INT Evry

Présentation via XSL

Le guide de la clarée Cours BD/WEB - INT Evry 192

Documents bien-formés et valides

 Un document est bien formé si son balisage est correct  un document est valide s'il est bien formé et qu'il est conforme à sa DTD Cours BD/WEB - INT Evry 193

Programmer avec XML

 Java le plus abouti  C, Perl, Python etc. aussi  support Unicode est le plus compliqué  SAX, Simple Api for Xml (dirigé par les événements)  DOM, the Document Object Model (permet de manipuler l'arbre) 194 Cours BD/WEB - INT Evry

XML et Web

 XML offre une séparation claire entre structure logique (contenu) et présentation  permet de proposer des chaines de production de documents sous différentes présentations à partir du même contenu (HTML vs PDF, WML vs HTML,...) 195 Cours BD/WEB - INT Evry

Environnements de publication XML

 Environnement logiciel permettant de servir différentes présentations de documents XML  Cocoon de XML-Apache, Qweelt de Univ. Penn.

 Souvent basé sur des implantations Java (Servlet, JSP) 196 Cours BD/WEB - INT Evry

Cocoon

Client navigateur Web ou portable 1 6 Apache 2 + Tomcat Cocoon 5 Doc. HTML Doc. WML 4 XML QL Doc.

XML 3a Interprète XSP 3b Interprète XSLT Doc. PDF 4 Interprète FOP Cours BD/WEB - INT Evry 197

XSP

 Xml Server Pages  généralisation des JSP pour XML  permet de générer dynamiquement un document XML (au moins en partie) avant qu ’il soit transformé  document XSP est un document XML (bien formé) 198 Cours BD/WEB - INT Evry

Conclusion

 de nombreux produits et diverses techniques  choix dépend du type de site visé : » web de consultation : passerelles simples ou langages de script serveur PHP, ASP » webs multiples à partir d ’une même source : XML » portail d ’entreprise : JSP ou Cocoon 199 Cours BD/WEB - INT Evry