1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept...

199
1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique

Transcript of 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept...

Page 1: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

1Cours BD/WEB - INT Evry

Les passerelles BD/WEB

Coordonnateur du coursBruno DEFUDE

Dept INFormatique

Page 2: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

2Cours BD/WEB - INT Evry

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

Page 3: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

3Cours 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

Page 4: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

4Cours 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

Page 5: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

5Cours BD/WEB - INT Evry

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

Page 6: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

6Cours BD/WEB - INT Evry

Page 7: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

7Cours BD/WEB - INT Evry

Bases de données relationnelles

Page 8: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

8Cours BD/WEB - INT Evry

Les SGBD relationnels

Fonctionnalités Modèles de données langages de requêtes

» SQL transactions et contrôle de concurrence

Page 9: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

9Cours BD/WEB - INT Evry

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, Web, langages programmation, ...)

Page 10: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

10Cours BD/WEB - INT Evry

Les modèles pour les bases de données

Modèle orienté conception : Entité/Association

Modèle orienté implantation : modèle relationnel

Page 11: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

11Cours BD/WEB - INT Evry

Modèle Entité/Association [Chen 77]

Exemple de modèle

Eleve

Code_elev Nom_Elev

AppartientSalle

Classe

No_ClasseFait cours

NotationNote

Matiere

Code_Matiere

ProfCode_prof

Code_categNomprof

Nom_Categ

1,n

1,1

1,n

1,n

1,n

0,n

0,n

1,n

Page 12: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

12Cours BD/WEB - INT Evry

Modèle Entité/Association

Critique du modèle Entité/Association Avantages Inconvénients Sémantique riche Uniquement un

modèle de Extension aux description de données concepts objets (héritage, ...) Pas de lg de

manipulation associé Aspect visuel Pas de SGBD E/A Modèle de conception de BD Pas un modèle

d’implantation de BD

Page 13: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

13Cours BD/WEB - INT Evry

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)

Page 14: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

14Cours BD/WEB - INT Evry

Exemples de relations

21MaiselMeunier3

20CROUSMillot2

20MaiselBélaïd1

AgeAdresseNomNumElève

10BD2

20BD1

18IO3

17IO2

NoteCodeUVNumElèveInscrit

Page 15: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

15Cours 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]

Page 16: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

16Cours BD/WEB - INT Evry

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)

Page 17: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

17Cours 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

Page 18: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

18Cours BD/WEB - INT Evry

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

Page 19: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

19Cours BD/WEB - INT Evry

Exemples de requêtes en algèbre relationnelle

Base de données exemple : les vinsVins(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

Page 20: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

20Cours BD/WEB - INT Evry

Modèle E/A de la BD des vins

0,n

1,1

(1,1)0,n

1,1

0,n

0,n

0,n

Vins

numcrudegréannee

Producteurs

numnomprenomregion

recoltes

Livraisons

No_ordreqteLivréedate

concerne

Buveurs

numnomprenomville

Commandes

ncdeqtédate

Passer

Donner_lieu

quantite

Page 21: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

21Cours BD/WEB - INT Evry

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

Introduction

Page 22: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

22Cours BD/WEB - INT Evry

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)

Introduction

Page 23: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

23Cours BD/WEB - INT Evry

Schéma d’une relation

CréationCREATE 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

Définition des données

Page 24: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

24Cours BD/WEB - INT Evry

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 integer PRIMARY KEY,cru char (40) NOT NULL,annee integer

CONSTRAINT Cannee CHECK (annee between 1970 and 2010),degre number(4,2)

CONSTRAINT Cdegre CHECK (degre between 9.0 and 15.0))

Définition des données

Page 25: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

25Cours BD/WEB - INT Evry

Syntaxe générale de recherche

Syntaxe

SELECT <liste d’attributs projetés>

FROM <liste de relations>

[WHERE <liste des critères de

restriction et de jointure>]

Comment remplir les clauses ?

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

Où sont les attributs dont j’ai besoin ?

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

Page 26: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

26Cours BD/WEB - INT Evry

Projection

"Donner tous les vins" SELECT *

FROM Vins

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

SELECT DISTINCT cru

FROM Vins

Page 27: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

27Cours 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 cruFROM VinsWHERE annee=1995 AND degre = 12ORDER BY cru

Page 28: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

28Cours BD/WEB - INT Evry

Jointure

"Donner les noms des producteurs de Pommard"

SELECT nom

FROM Vins V, Recoltes R, Producteurs P

WHERE V.num = R.nvin

AND R.nprod=P.num

AND cru = ‘Pommard’

Recherche des données

Produitcartésien

Conditions de jointures

Nom d’attribut non ambigü

Page 29: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

29Cours BD/WEB - INT Evry

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

Page 30: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

30Cours BD/WEB - INT Evry

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 cruORDER BY 2 DESC

" … uniquement si ce cru concerne plus de 3 vins" SELECT cru, AVG(degre) FROM Vins GROUP BY cruHAVING COUNT(*)>=3ORDER BY 2 DESC

Page 31: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

31Cours BD/WEB - INT Evry

Calcul de la partition

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

13Tavel

12Tavel

13Pommard

11Tavel

12Pommard

degrecruVins

13Tavel

12Tavel

11Tavel

13Pommard

12Pommard

degrecruVins

12Tavel

12,5Pommard

degrecruVinset

et

initiale

Page 32: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

32Cours BD/WEB - INT Evry

Synthèse

Tri des tuples obtenus en (4) suivant les valeurs Al

<liste d’attributs Al ou n° ordre dans le SELECT>

ORDER BY5

Sélection des groupes de (3) vérifiant C2

<condition sur groupes -fonctions> : C2

HAVING4

Partitionnement de l’ensemble obtenu en (2) suivant les valeurs Ak

<liste attributs Ak Aj>GROUP BY3

Sélection des tuples de (1) respectant la condition C1

<Conditions sur les tuples> : C1

WHERE2

Produit cartésien des relations Ri<liste de relations Ri>FROM1

Projection de l’ensemble obtenu en (5) sur les Aj, calcul des expressions, calcul des fonctions (appliquées aux groupes s’il y en a) sur Ap

<liste et/ou expressions attributs Aj et/ou fonctions sur Attributs Ap>

SELECT6

Page 33: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

33Cours 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 Faux

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

Page 34: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

34Cours BD/WEB - INT Evry

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

Page 35: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

35Cours BD/WEB - INT Evry

Mise à jour

Insertion Suppression Modification

Page 36: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

36Cours BD/WEB - INT Evry

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, degreFROM VinsWHERE cru = 'Bordeaux'

CREATE TABLE BORDEAUX ASSELECT num, annee, degreFROM VinsWHERE cru = 'Bordeaux'

Page 37: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

37Cours BD/WEB - INT Evry

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 VinsWHERE degre < 9 OR degre > 12

"Supprimer les commandes passées par Belaïd" DELETE FROM CommandesWHERE nb IN (

SELECT numFROM BuveursWHERE nom= ‘Belaïd')

Page 38: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

38Cours BD/WEB - INT Evry

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 VinsSET degre = degre * 1.1WHERE cru = 'Gamay'

« Le buveur ‘Bac’ augmente ses commandes de 10 unités »UPDATE CommandesSET qte = qte + 10WHERE nb IN (

SELECT numFROM BuveursWHERE nom='Bac')

Page 39: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

39Cours BD/WEB - INT Evry

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

Page 40: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

40Cours BD/WEB - INT Evry

Vues relationnelles

Relation virtuelle » Ensemble de tuples n ’existe pas

physiquement» Calculable à l ’exécution

Définie par une requête SQL Utilisable comme une relation Utilisable pour définir une autre vue

Page 41: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

41Cours 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;

Page 42: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

42Cours 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

Page 43: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

43Cours 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

Page 44: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

44Cours BD/WEB - INT Evry

Exemple de transaction

T1: virement d'une somme N. T2: dépôt d'une somme M. Transaction T1 Transaction T2 DEBUT B := Lire(X) A := Lire(X) B := B + M A := A - N X := Ecrire(B) X := Ecrire(A) FIN A := Lire(Y) A := A + N Y := Ecrire (B)

FIN

Page 45: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

45Cours BD/WEB - INT Evry

Propriétés d'une transaction

(assurées par le SGBD) A C I D

Atomicity Consistency Isolation Durability

Page 46: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

46Cours BD/WEB - INT Evry

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.

Page 47: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

47Cours 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.

Page 48: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

48Cours BD/WEB - INT Evry

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

Page 49: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

49Cours 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.

Page 50: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

50Cours BD/WEB - INT Evry

Page 51: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

51Cours BD/WEB - INT Evry

Le WWW

Page 52: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

52Cours BD/WEB - INT Evry

Le système WWW

architecture de base les standards du Web le stockage des documents la protection des documents extensibilité du Web synthèse

Page 53: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

53Cours BD/WEB - INT Evry

Vocabulaire Système

programme exécutable processus "classique" processus "multi-thread"

Page 54: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

54Cours BD/WEB - INT Evry

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

Page 55: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

55Cours BD/WEB - INT Evry

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

Page 56: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

56Cours 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

Page 57: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

57Cours 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

Page 58: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

58Cours BD/WEB - INT Evry

Utilisation des threads

Implantation efficace d ’un serveur de requêtes

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

Page 59: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

59Cours BD/WEB - INT Evry

WWW - Architecture de base

Client W3 Serveur W3

pageHTMLaffichée

HTTP

pagesHTML

systèmedefichiers

chaque pagepossède un URL

Page 60: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

60Cours BD/WEB - INT Evry

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

Page 61: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

61Cours 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

Page 62: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

62Cours 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

Page 63: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

63Cours 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

Page 64: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

64Cours 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

Page 65: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

65Cours BD/WEB - INT Evry

WWW - Architecture étendue

HTTP CGIprotocoledédié

client W3 serveur W3scriptCGI

appli externe

formW3

pageW3

systèmede fichiers

BD ousystèmede fichiers

Pages HTML statiques

Pages HTMLdynamiques

Page 66: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

66Cours BD/WEB - INT Evry

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

Page 67: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

67Cours BD/WEB - INT Evry

Exemple de formulaire

<html><body><form name="f1" action="http://www-inf.int-evry.fr/prog.cgi"

method="get" target="resultat">Donner une valeur pour att1 : <input name="att1" value="0"><input type="hidden" name="att2" value=""><input type="submit" value="lancer"></form></body></html>

Page 68: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

68Cours BD/WEB - INT Evry

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

Page 69: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

69Cours BD/WEB - INT Evry

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

Page 70: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

70Cours BD/WEB - INT Evry

Exemple de CGI en Perl#!/usr/bin/perl -wuse CGI qw (:standard);$ior = param('IOR');print header;print "<HTML><HEAD>\n";print "<TITLE>R&eacute;sultat d&eacute;codage IOR</TITLE></HEAD>\n";print "<H4>IOR d&eacute;cod&eacute;</I></H4><BR>";print "<HR WIDTH=80%><BR>\n";open(FILE, "-|") || exec "/inf/QOS_CORBA/Olivier/bin/iordump", "-f", $ior;while ($LIG=<FILE>) { print "$LIG<br>\n"; }print "<HR WIDTH=80%><BR>\n";close(FILE);print "</BODY>\n"; print "</HTML>\n";

Page 71: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

71Cours 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

Page 72: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

72Cours 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

Page 73: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

73Cours 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

Page 74: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

74Cours BD/WEB - INT Evry

WWW - Problème du CGI

Client 1

Client 2

Client 3

C

G

I

Processdu serveur

Process 1

Process 1

Process 1Serveur W3

Scripts CGI

Page 75: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

75Cours BD/WEB - INT Evry

WWW - Solution des API

Client 1

Client 2

Client 3

Processdu serveur

Serveur W3

API

ensemblede fonctions

Thread 1

Thread 2

Thread 3

les scripts CGI deviennent des fonctionsd'une librairie dynamique DLL, exécutéesdans des thread du process serveur W3

Page 76: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

76Cours BD/WEB - INT Evry

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

Page 77: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

77Cours 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)

Page 78: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

78Cours 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

Page 79: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

79Cours 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

Page 80: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

80Cours 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)

Page 81: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

81Cours BD/WEB - INT Evry

Architecture des passerelles

BD/WEB

Page 82: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

82Cours BD/WEB - INT Evry

Interfacer le Web et les BD

Principes des passerelles Exemples des solutions Microsoft

» IDC» ASP

Passerelle Web/Oracle INT Solutions Java (applets, servlets, JSP)

Page 83: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

83Cours BD/WEB - INT Evry

Principes des passerelles

Page 84: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

84Cours BD/WEB - INT Evry

Principes des passerelles

Passerelles mono-requête Passerelles multi-requêtes

(transactionnelles)

Page 85: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

85Cours BD/WEB - INT Evry

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

Page 86: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

86Cours BD/WEB - INT Evry

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)

Page 87: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

87Cours 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 ,…)

Page 88: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

88Cours BD/WEB - INT Evry

Accès à la BD (html pur)

Client browser

ServeurHTTP

SGBD

url

résultat html

CGI

Passerelle

querystring

SQL résultat

rés. HTML

Page 89: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

89Cours BD/WEB - INT Evry

Exemple HTML pur

<html><body><form name="f1" action="http://mica/multi2.cgi" method="get"><input type="hidden" name="uid" value="citcom/citcom@MICA"><input type="hidden" name="sqlstatement"

value="select * from vins where cru=">Donner un cru : <input name="vcru" value=""><p><input type="submit" value="lancer"></form></body></html>

Page 90: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

90Cours BD/WEB - INT Evry

Accès à la BD (script client)

Client browser

ServeurHTTP

SGBD

url

résultat html

Passerellequerystring

SQL résultatrés. HTML

Page 91: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

91Cours BD/WEB - INT Evry

Exemple HTML avec Javascript

<html><body><form name="f1" action="http://mica/multi2.cgi" method="get"><input type="hidden" name="uid" value="citcom/citcom@MICA"><input type="hidden" name="sqlstatement"

value="select * from vins where cru=">Donner un cru : <input name="vcru" value=""><p><input type="button" value="lancer"

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

</form></body></html>

Page 92: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

92Cours BD/WEB - INT Evry

Accès à la BD (hors http)

Client browser+ programme Java, Tcl, ...

SGBD

protocolespécifique

protocole spécifique : JDBC, IIOP (CORBA)

Page 93: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

93Cours BD/WEB - INT Evry

Qui fait quoi ?

(1) (2) (3)

HTML pur

script client

hors http

cgi spécifique SGBD

SGBD

SGBD

passerelle ouSGBD

passerelle ouSGBD

client

client

Page 94: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

94Cours 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

Page 95: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

95Cours BD/WEB - INT Evry

Performances

CGI vers NSAPI, ISAPI (mais propriétaire)

diminuer le nombre de processus (si grand nombre de clients : passerelle multithread

Page 96: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

96Cours BD/WEB - INT Evry

TransactionsRappels

transaction = programme BD (séquence de lire, écrire)

propriétés = ACID– A : Atomicity– C : consistency– I : Isolation– D : Durability

Page 97: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

97Cours BD/WEB - INT Evry

Exemples d’applis transactionnelles

commandes on-line (vente par correspondance, train, avion, ...)

banque assurance une bonne partie du e-business!!!!

Page 98: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

98Cours BD/WEB - INT Evry

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, ...)

Page 99: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

99Cours BD/WEB - INT Evry

Transactions et cookies

Client browser Serveur http cgi

SGBD

1 11’ c11’ c1

2 c1 2 c12’ c1, c2 2’ c1, c2

3 fin c1, c2 3 fin c1, c2

4 sql(c1, c2)

5’ del(c1, c2) 5’ del(c1, c2)4’ ok1 : premier accès

1’ : retour du cookie c12 : autre accès avec transport du cookie c12’ : retour des cookies c1, c23 : fin transaction avec transport c1, c24 : construction de la transaction et exécution sur le SGBD5’ : suppression des cookies

Page 100: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

100Cours BD/WEB - INT Evry

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

Page 101: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

101Cours 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)

Page 102: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

102Cours BD/WEB - INT Evry

Passerelle transactionnelle

Client browser Serveur http cgi démon passerelle SGBD

Page 103: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

103Cours BD/WEB - INT Evry

Passerelle transactionnelleprincipes

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)

Page 104: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

104Cours BD/WEB - INT Evry

Passerelle transactionnelleFonctionnement (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

Page 105: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

105Cours BD/WEB - INT Evry

Passerelle transactionnelleFonctionnement (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

Page 106: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

106Cours BD/WEB - INT Evry

Passerelle transactionnelleBilan

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)

Page 107: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

107Cours 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

Page 108: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

108Cours BD/WEB - INT Evry

Page 109: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

109Cours BD/WEB - INT Evry

Passerelles BD/WEB

Quelques solutions industrielles

Page 110: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

110Cours BD/WEB - INT Evry

Solutions industrielles

Solutions Microsoft» IDC» ASP

Passerelle Web/Oracle INT Solution Java

» appels, servlets, JSP

Page 111: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

111Cours 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

Page 112: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

112Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Architecture

BD

client W3

IIS IDC piloteSQL ServerODBC

SQLServer

HTTP

ISAPI.idc

.htx SQL (via API ODBC)

SQL(via APISQL Server)

Page 113: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

113Cours BD/WEB - INT Evry

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

Page 114: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

114Cours 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

Page 115: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

115Cours 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

Page 116: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

116Cours 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

Page 117: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

117Cours BD/WEB - INT Evry

Web/BD - IIS + IDC Formulaire avec un

script .idc

<form method=“post” action=“/scripts/bigsal.idc”> <p> Donnez salaire: <input name=“sal” value=“10000> <p> <input type=“submit” value=“go”> </form>

Page 118: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

118Cours BD/WEB - INT Evry

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%

Page 119: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

119Cours BD/WEB - INT Evry

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

<html> <head><title>Gros salaires</title></head> <body> <%begindetail%> <%if CurrentRecord eq 0%>

» <b>Voici les gros salaires > <%idc.sal%></b><br> <%endif%> <%nom%><%sal%> <%enddetail%> <p>

Page 120: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

120Cours BD/WEB - INT Evry

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

(2)

<%if CurrentRecord eq 0%>» <i>Désolé, pas de salaire sup. à <%idc.sal%> </i>

<%else%>» <h2>Page Web créée par IDC</h2>

<%endif%> <p> </body> </html>

Page 121: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

121Cours 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)

Page 122: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

122Cours BD/WEB - INT Evry

Page 123: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

123Cours BD/WEB - INT Evry

Interface BD/Webles 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 ’utilisation de contrôles ActiveX et d ’applets JAVA

interface BD à travers un composant spécifique ADO

Page 124: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

124Cours BD/WEB - INT Evry

Principe ASP

Client Serveur

Browser

DécodageHTTP

Pagedemandée

Page activeASP

Vbscriptou Jscript

Données

Pagedynamique

AjoutenveloppeHTTP

Encodage HTTP

Page 125: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

125Cours BD/WEB - INT Evry

Architecture générale

Internet IISAppli. ISAPI

Appli. CGI

Scripts Perl, AWKDLL Interface ASP

InterprèteVBscript

InterprèteJscript

Composant ADO

ComposantsActive Server

Composantspersonnalisés

Pilote ODBC

Données

Pages actives (fichiers ASP)

SSinclude

Page 126: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

126Cours BD/WEB - INT Evry

Plan d ’une page ASP<HTML>

<HEAD>…</HEAD><BODY>

<% …………….. %><SCRIPT LANGUAGE=Vbscript>

…</SCRIPT> <SCRIPT LANGUAGE=Vbscript RUNAT SERVER>

…</SCRIPT><!--#Include … --><TABLE> …</TABLE>

</BODY></HTML>

Sections HTML normales

Script serveur (création page)

Script client (interprétation page)

Script serveur (procédures, fonctions)

SSI (script ou HTML dans fichier séparé)

HTML normal

Page 127: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

127Cours BD/WEB - INT Evry

Le modèle objet d ’ASP

Client Serveur

Objet REQUESTCollections :

CookiesFormQueryStringServerVariablesClientCertificate

Objet RESPONSECollection :

Cookies(propriétés et méthodes)

Objet SERVER(méthodes)

Objet APPLICATION

(propriétés et méthodes)

Objet SESSION(propriétés etméthodes)

Page 128: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

128Cours BD/WEB - INT Evry

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)

Page 129: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

129Cours BD/WEB - INT Evry

Accès à la BD (ADO)

Active Server Pages

Composant ActiveDatabase

ADO

PiloteODBC

Interface dufournisseur d ’accès

Source de données

Page 130: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

130Cours BD/WEB - INT Evry

Le modèle objet ADO

Objet RecordSet

Objet Field

Collection Fields

Objet Property

Collection Properties

Objet Property

Collection Properties

Objet Error

Collection Errors

Objet Parameter

Collection Parameters

Objet Property

Collection Properties

Objet Connection

Objet Command

Page 131: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

131Cours BD/WEB - INT Evry

Exemple de transactionSet oConn =

Server.CreateObject(« ADODB.Connection »)oConn.Open « Contacts »oConn.BeginTransoConn.Execute « DELETE * FROM Contact WHERE

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

State=‘ LA ’ »Nberror=Nberror + oConn.Errors.Countif Nberror = 0 Then oConn.CommitTransElse oConn.RollbackTransEnd IfoConn.CloseSet Oconn = Nothing

Page 132: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

132Cours BD/WEB - INT Evry

Exemple de fichier ASP<HTML><HEAD>// 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 //

<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1252"><TITLE>Logiciel</TITLE></HEAD><BODY>

// 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") = connEnd If%>

Page 133: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

133Cours BD/WEB - INT Evry

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<TABLE BORDER=1 BGCOLOR=#ffffff CELLSPACING=0><FONT FACE="Arial" COLOR=#000000><CAPTION><B>Logiciel</B></CAPTION><THEAD><TR><TH>Cl&eacute;Logiciel></TH><TH >NomLogiciel></TH><TH>PrixVente></TH><TH>PrixAchat></TH><TH>Stock></TH><TH>Photo></TH><TH>D&eacute;tails></TH></TR></THEAD><TBODY>

Page 134: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

134Cours BD/WEB - INT Evry

Exemple ASP (3)// ON SE POSITIONNE SUR LE PREMIER ELEMENT DU RESULTAT<%On Error Resume Nextrs.MoveFirst// TANT QUE IL RESTE DES TUPLES A TRAITERdo while Not rs.eof %>// TRAITEMENT D'UN TUPLE (AFFICHAGE EN FORMAT HTML DE CHACUN DES ATTRIBUTS)<TR VALIGN=TOP><TD><%=Server.HTMLEncode(rs.Fields("CléLogiciel").Value)%><BR><TD><TD><%=Server.HTMLEncode(rs.Fields("NomLogiciel").Value)%><BR></TD><TD><%=Server.HTMLEncode(rs.Fields("PrixVente").Value)%><BR></TD><TD><%=Server.HTMLEncode(rs.Fields("PrixAchat").Value)%><BR></TD><TD><%=Server.HTMLEncode(rs.Fields("Stock").Value)%><BR></TD><TD><BR></TD><TD><><%=Server.HTMLEncode(rs.Fields("Détails").Value)%><BR></TD></TR>// TUPLE SUIVANT<%rs.MoveNext// FIN TANT QUEloop%></TBODY><TFOOT></TFOOT></TABLE></BODY></HTML>

Page 135: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

135Cours BD/WEB - INT Evry

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

Page 136: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

136Cours BD/WEB - INT Evry

Page 137: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

137Cours BD/WEB - INT Evry

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

Page 138: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

138Cours 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 ’est pas également)

Page 139: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

139Cours BD/WEB - INT Evry

Exemple de formulaire

<html><body><h1>GENERATION D ’UN FORMULAIRE D ’INSERTION DANS LA RELATION VINS</h1><P></P><form name=‘f1’ action=‘http://cgi’ mode=‘get’><input type=‘hidden’ name=‘uid ’ value=‘toto/titi@MICA’><input type=‘hidden’ name=‘mode’ value=‘INS’><input type=‘hidden’ name=‘table’ value=‘VINS’><input type=‘hidden’ name=‘sqlstatement’ value=‘’><input type=‘button’ value=‘insertion dans VINS’ onClick=‘f1.submit();’><P></P></form></body></html>

Page 140: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

140Cours 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

Page 141: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

141Cours 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_)

Page 142: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

142Cours BD/WEB - INT Evry

Générateur d ’application

générateurSourceXML

Descriptionde l ’application

Formulaires HTMLà personnaliser

Page 143: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

143Cours BD/WEB - INT Evry

Exemple de source XML<?xml version=« 1.0 »?><appli><entete>

<uid>titi/toto@MICA</uid><titre>Mon Appli</titre>

</entete><liste_form>

<formulaire><nom_table>VINS</nom_table><mode><mode_ins></mode_ins></mode>

</formulaire></liste_form></appli>

Page 144: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

144Cours BD/WEB - INT Evry

Page 145: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

145Cours BD/WEB - INT Evry

Solution Java

Page 146: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

146Cours BD/WEB - INT Evry

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

Page 147: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

147Cours 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

Page 148: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

148Cours 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

Page 149: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

149Cours BD/WEB - INT Evry

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

Page 150: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

150Cours BD/WEB - INT Evry

Les pilotes (suite)

Application Java

Commutateur JDBC(Driver Manager)

JDBC NetDriver(Java)

Pont JDBC-ODBC(Java)

Driver Javaou Java/C

Protocole d’accès aumiddleware JDBC

Protocole d'accès propriétaire spécifiques aux SGBDR

API JDBC

Driver ODBC(c/c++)

Page 151: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

151Cours BD/WEB - INT Evry

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)

Page 152: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

152Cours BD/WEB - INT Evry

Classes et interfaces du "paquage"java.sql

Driver Statement Connection ResultSet ResultSetMetaData DatabaseMetaData

PreparedStatement

CallableStatement

Java.lang.Object

Java.util.Date DriverManager DriverPropertyInfo Types

Date Time TimeStamp

Page 153: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

153Cours BD/WEB - INT Evry

Connexion JDBC

Classe java.sql.Connection URL d’une source de données

jdbc:<subprotocol>:<subname>

jdbc:oracle:oci8:@

jdbc:oracle:thin:@mica:1521:ENSE

jdbc:msql//athens.com:4333/db_test

Page 154: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

154Cours BD/WEB - INT Evry

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)

Page 155: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

155Cours 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();

Page 156: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

156Cours BD/WEB - INT Evry

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)

Page 157: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

157Cours BD/WEB - INT Evry

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);

Page 158: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

158Cours BD/WEB - INT Evry

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.

Page 159: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

159Cours BD/WEB - INT Evry

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

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

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

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]);

}

Page 160: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

160Cours 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();}

}

Page 161: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

161Cours BD/WEB - INT Evry

Accès aux méta-données

La méthode getMetaData() permet d'obtenir les méta- données d'un ResultSet.

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)» ...

Page 162: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

162Cours BD/WEB - INT Evry

Exemple de MetaDataClass HTMLResultSet {

private ResultSet rs;

public HTMLResultSet (ResultSet rs){this.rs=rs;}

public String toString() {

StringBuffer out = new StringBuffer(); out.append("<TABLE>");

ResultSetMetaData rsmd=rs.getMetaData();

int numcols=rsmd.getColumnCount();

out.append("<TR>");

for (int i=0;i<numcols;i++) {

out.append("<TH>").append(rsmd.getColumnName(i));

}

out.append("</TR>");

...

}

Page 163: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

163Cours BD/WEB - INT Evry

Correspondance de type SQL/Java

Type SQL Type Java Type Java retournépar getObject()

Méthoderecommandée aulieu de getObject()

numeric Java.Math.BigDecimal Java.Math.BigDecimal Java.Math.BigDecimalGetBigDecimal()

integer Integer Integer Integer getInt()

float Double Double Double getDoubel()

char, varchar String String String getString()

date Java.sql.Date Java.sql.Date Java.sql.Date getDate()

Page 164: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

164Cours 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

Page 165: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

165Cours 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

Page 166: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

166Cours BD/WEB - INT Evry

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

Page 167: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

167Cours 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(); }

Page 168: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

168Cours BD/WEB - INT Evry

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

Page 169: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

169Cours BD/WEB - INT Evry

Applet (exemple)

Hello.html<html><body><h2>Test d'applet</h2>Voici le test : <applet code="HelloWorld.class"></applet></body></html>

HelloWorld.javaimport java.applet.Applet;import java.awt.Graphics;public class HelloWorld extends Applet {

public void paint (Graphics g) {g.DrawString("HelloWorld!", 50, 25); }

}

Page 170: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

170Cours BD/WEB - INT Evry

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)

Page 171: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

171Cours BD/WEB - INT Evry

Architecture servlet

Client navigateurWeb Servlet container

servlet2servlet1

ServeurHTTP

Container gère les servlets (activation, désactivation)

Page 172: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

172Cours BD/WEB - INT Evry

Modèle d ’objets servlet

Objet request servlet1 Objet Response

Objet session

getParametergetAttributegetHeadersgetCookies

setBufferSizesetHeadersetRedirect

getAttribute

Page 173: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

173Cours BD/WEB - INT Evry

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

Page 174: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

174Cours BD/WEB - INT Evry

Exemple de page JSP<html><%@ page language=« java » import=« java.util.* » %><h1>Bienvenue</h1><p>Jour : <p><jsp:usebean id=« clock » class=« jspCalendar »/><ul><li>Jour : <%= clock.getDayOfMonth() %><li>Annee : <%= clock.getYear() %></ul><%-- 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 » %></html>

Page 175: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

175Cours BD/WEB - INT Evry

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

Page 176: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

176Cours 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

Page 177: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

177Cours BD/WEB - INT Evry

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)

Page 178: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

178Cours BD/WEB - INT Evry

Exemple d ’utilisation de tags

<html><%@ taglib uri=« http://acme.com/taglibs/simpleDB.tld »prefix=« x » %><x:queryBlock connData=« defude/bruno@MICA »> <x:queryStatement>select num, cru from vins</x:queryStatement> Les 10 premiers vins sont : <table> <tr><th>Numero</th><th>Cru</th> <x:queryCreateRows from =« 1 » to=« 10 »>

<td><x:queryDisplay field=« num »/></td><td><x:queryDisplay field=« cru »/></td>

</x:queryCreateRows> </table></x:queryBlock></html>

Page 179: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

179Cours BD/WEB - INT Evry

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 (document XML) + une classe Java l ’implémentant

Page 180: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

180Cours BD/WEB - INT Evry

Page 181: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

181Cours BD/WEB - INT Evry

Evolution du WWW

Le monde XML

Page 182: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

182Cours BD/WEB - INT Evry

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.

Page 183: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

183Cours BD/WEB - INT Evry

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

R D F

X M L S ch em a

M Ž tad escrip tio n

X M L

H iŽ rarch iq u e

X Lin k

X P o in ter

X P ath

H yp ertex tu elle

D escrip tio n

X S LT

X S L

Tran sfo rm atio nP rŽ sen tatio n

S A X

D O M

P ro gram m atio n(A P I)

S gm lQ L

X M L-Q L

In terro gatio n

X M L

Page 184: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

184Cours BD/WEB - INT Evry

Qu'est XML?

Extensible Markup Language 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

Page 185: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

185Cours 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, ...)

Page 186: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

186Cours 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

Page 187: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

187Cours 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

Page 188: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

188Cours BD/WEB - INT Evry

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° 1S’é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évache (2 892 m) *** n° 2Du col de Névache (itinéraire n° 1), suivre la ligne de crête qui mène à la pointe de Névache. Attention : corniches possibles. Crampons utiles au printemps.

Page 189: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

189Cours BD/WEB - INT Evry

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

<?xml version="1.0" encoding="ISO-8859-1" ?>

<guide>

<titre>Itinéraires skieurs dans la vallée de la Clarée</titre>

<auteur>Jean-Gabriel Ravary</auteur>

<editeur>Le Polygraphe</editeur>

<annee>1991</annee>

<vallon>

<nom>Vallon des Muandes</nom>

<intro>

<para>Vallon situé à l’est du refuge des Drayères.</para>

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

</intro>

... Itinéraires ...

</vallon>

</guide>

Page 190: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

190Cours BD/WEB - INT Evry

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

<itineraire id="I15.1">

<nom>Col de Névache</nom><alt>2794</alt><cotation>**</cotation>

<num>1</num>

<para>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. <note type="prudence">Départ assez raide.</note></para>

</itineraire>

<itineraire id="I15.2">

<nom>Pointe de Névache</nom><alt>2892</alt><cotation>***</cotation>

<num>2</num>

<para>Du col de Névache <renvoi cible="I15.1"/>, suivre la ligne de crête qui mène à la pointe de Névache. <note type="prudence">Attention : corniches possibles.</note> <note type="materiel">Crampons utiles au printemps.</note></para>

</itineraire>

Page 191: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

191Cours BD/WEB - INT Evry

DTD “Itinéraires Skieurs”<?xml version="1.0" ?><!ELEMENT guide (titre, auteur+, editeur, annee, vallon+)><!ELEMENT titre (#PCDATA)><!ELEMENT auteur (#PCDATA)><!ELEMENT editeur (#PCDATA)><!ELEMENT annee (#PCDATA)><!ELEMENT vallon (nom, intro, itineraire+)><!ELEMENT nom (#PCDATA)><!ELEMENT intro (para+)><!ELEMENT para (#PCDATA | renvoi | note)*><!ELEMENT renvoi EMPTY><!ATTLIST renvoi cible IDREF #REQUIRED><!ELEMENT note (#PCDATA)><!ATTLIST note type (prudence | materiel) "prudence"><!ELEMENT itineraire (nom, alt, cotation, num, para+)><!ATTLIST itineraire id ID #REQUIRED><!ELEMENT alt (#PCDATA)><!ELEMENT cotation (#PCDATA)><!ELEMENT num (#PCDATA)>

Page 192: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

192Cours BD/WEB - INT Evry

Présentation via XSL<?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <head><title>Le guide de la clarée</title></head> <body> <xsl:value-of select="."/> </body> </html> </xsl:template>

</xsl:stylesheet>

Page 193: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

193Cours BD/WEB - INT Evry

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

Page 194: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

194Cours BD/WEB - INT Evry

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)

Page 195: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

195Cours 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,...)

Page 196: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

196Cours 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)

Page 197: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

197Cours BD/WEB - INT Evry

Cocoon

Clientnavigateur

Web ou portable

Doc.XML

Interprète XSLT

Interprète FOPDoc. PDF

Interprète XSPDoc. HTML

Doc. WML

Cocoon

1 2

3a

4

4

56

3b

XMLQLApache

+ Tomcat

Page 198: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

198Cours BD/WEB - INT Evry

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é)

Page 199: 1 Cours BD/WEB - INT Evry Les passerelles BD/WEB Coordonnateur du cours Bruno DEFUDE Dept INFormatique.

199Cours 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