Les Bases de données et le Web. Plan général Présentation Quelques standards Quelques moyens...

Preview:

Citation preview

Les Bases de données et le Web

Plan général

Présentation

Quelques standards

Quelques moyens d'accès aux

données

La technologie Microsoft

L’alternative JAVA avec IBM

WebSphere

Présentation

Présentation (1)

Extension du Système d ’information. Accessibilité de partout.

Interface conviviale et simple.

Problèmes de déploiement.

Comment faire une application de gestion sur le Web ?

Présentation (2)

Architecture 3 niveaux Découpage modulaire

Utilisateur / Métier / Données

Architecture d ’objets distribués COM/DCOM Microsoft

CORBA Unix

JAVA BEAN java

Approche Objet / Composant

Quelques standards

Quelques standards

HTTP

Les serveurs WEB

HTML et Formulaires Web

JavaScript

Les Scripts C.G.I.

Limitations et Problèmes ...

HTTP (1)

H.T.T.P. = HyperText Transfer Protocol.

Protocole standard Dialogue entre le client

Web/Serveur Web. Sur un port spécifié (par défaut 80)

Protocole de type déconnecté Le serveur ne garde par de

contexte (pas de session utilisateur)

HTTP (2)

Le client envoie au serveur (requête HTTP) Une demande de document :

GET /index.html HTTP/1.0 Des informations sur sa configuration

(en-tête optionnel: Nom, numéro de version. type de documents supportés ...

Données supplémentaires (facultatif)

HTTP (3) Le serveur répond alors au client

par L ’envoi d ’une ligne d’état contenant :

la version HTTP, le code d ’état et sa description.

HTTP/1.0 200 OK L ’envoi d ’en-têtes

Informations concernant le serveur et le document demandé

Les données formant le document demandé

Le serveur coupe la connexion

HTTP (4)

Type de commandes HTTP supportées GET : les données du client se

trouvent dans l ’URL. POST : les données du client se

trouvent dans le requête HTTP. HEAD : Idem GET sauf que le

serveur n ’envoie aucune données (en-tête seulement)

LINK, PUT, DELETE ...

Les serveurs WEB (1) C ’est un programme qui tourne sur le

serveur Démon (UNIX), Service (Windows NT)

Son Rôle : Recevoir les requêtes des clients

(navigateurs) Exécuter des scripts CGI Renvoyer le contenu des documents

demandés Gérer les accès.

Serveur Web (2)

Clients (Navigateurs)

Réseau local

Serveur WEB

[ Port 80 ]

HTTP

HTML et Formulaires Web (1)

HTML : HyperText Markup Language

Langage de balises Description de pages

Interprété par le navigateur (non compilé !)

HTML 4 Dynamic HTML (Microsoft)

HTML et Formulaires Web (2)

Contrôles standard Internet : Submit, reset, button, text, checkbox, radio,

hidden, image, password. Inclus dans une balise <INPUT type=‘ ? ’>

Notion de Formulaire Contient des contrôles Internet Balise :

<FORM method=GET action=‘’>…</FORM> Soumission du formulaire

HTML et Formulaires Web (3) Les données des contrôles sont

envoyés dans la requête HTTP. Format d ’envoi des données

Couples Nom/Valeurs : nom=valeur Séparés par des &

Sans Espaces, ou autres caractères spéciaux

Solution : l ’Encodage hexadécimal Ex: le slash ‘ / ’ devient ‘ %2F ’

Les Scripts C.G.I. (1)

C.G.I. = Common Gateway Interface

Langages : PERL, C, C++ ... Conditions d ’utilisations :

paramètres (contrôles du formulaire) sur l ’entrée standard.

Ecriture d ’une page HTML sur la sortie standard.

Utilisation des variables d ’environnement

Les Scripts C.G.I. (2) Rôle du serveur WEB :

passage d ’argument renvoie de la page générée

Ex: Sur Unix Utilisation du langage C Récupération des arguments grâce à

argc et *argv[]. Création de la page résultante grâce à

printf.

Les Scripts C.G.I. (3)

<FORM name=form METHOD=POST action=‘ cgi.exe ’><INPUT type=text name=ess1><INPUT type=’SUBMIT ’ value=‘ Soumettre ’ name="Submit"></FORM>

Script CGI

Passage des valeurs de

contrôles sur l ’entrée standard

Ecriture dynamique de la page HTML sur la sortie standard

Soumission du formulaire

Quelques moyens d'accès aux données

Quelques moyens d'accès aux données

Accès à la base RDB : SQLMOD

La solution Microsoft : ADO

Accès à une base via JAVA : JDBC

Accès à la base RDB, Oracle Utilisation de SQLMOD

Instructions SQL encapsulé Extension du fichier *.sqlmod Compilé (compilateur SQLMOD)

$ SQMOD exemple.sqlmod => exemple.obj Définition de procédure, Curseurs

… 3 sections :

En-tête : Module, langage d'accès, Etc. Déclarations : Base, Curseurs, Etc. Procédures : traitements

La solution Microsoft : ADO

A.D.O.

Comment accéder aux données sur une plate-forme Microsoft ?

A.D.O. = ActiveX Data Object Composant COM : ADODB

Repose sur l'architecture OLE DB

Propose 7 objets COM pour l ’accès aux données.

L ’objet Connection

Représente une connexion à une

source de données

Soit un SGBD

Soit une autre source (Mail, fichiers

…)

Permet la gestion de

transactions.

L ’objet Recordset

Représente un vue tabulaire des données Un Recordset = une Ligne

Offre des méthodes & propriétés de navigation (MoveFirst, MoveNext

…) de manipulation (Delete, Update,

AddNew) Autres informations (type, propriétés) Collection de champs Field

L ’objet Field

Représente les colonnes de la vue tabulaire un Field = une colonne Accès via un recordset (recordset.fields)

Offre des méthodes & propriétés Valeur, type et propriétés du champ

4 champs

Field 1 Field 2

Field 3Field 4

FieldsRecordSet

L ’objet Command

Représente une commande qui peut être exécutée sur la source de données requête SQL (Select, Insert …). Exécution de procédure stockée. Etc.

Peut retourner un RecordSet Peut prendre des paramètres en

entrée Cf. Objet Parameter

L ’objet Parameter

Représente un paramètre d ’un objet Command. Accès via la collection Parameters

(toutes les commandes) Peut être un paramètre

D ’entrée [IN] De Sortie [OUT] Les deux [IN/OUT]

L ’objet Error

Collecte les erreurs liés à La connexion L ’exécution erronée de requêtes …

Visible à travers la collection Errors

Contient La description de l ’erreur Son type Etc.

Exemple d'accès en VBScript

Dim conn, rcs, i, str ' déclaration implicite en ASP

Set conn = createObject("ADODB.Connection")Set rcs = createObject(" ADODB.Recordset")conn.Open "DSN=MaBase;", "user", "password"rcs.Open "Select Entier, Chaine From Table", conn,

adOpenKeyset, adLockOptimisticwhile not rcs.EOF

i = rcs.Fields("Entier").Valuestr = rcs.Fields(" Chaine").Value rcs.MoveNext

wendrcs.Closeconn.Close

Accès à une base via JAVA : JDBC

J.D.B.C. (1)

J.D.B.C. = Java DataBase Connectivity Inspiré d ’ODBC (Microsoft)

Permet l ’accès à un SGBD via Java Grâce à un driver (JDBC-OBDC Bridge, …)

Multi-Plateforme

Package : (ensemble de classes Java)

java.sql

J.D.B.C. (2)

Accès à une base en trois étapes : Connexion avec le SGBD

Envoi de requête SQL

Traitement du résultat Sous forme tabulaire (Select)

Impact des modifications (Insert, Update …)

Cas des procédures stockées

Connexion avec le SGBD

Grâce à l ’objet Connection Obtenu par la méthode getConnection() :

Connection Conn = DriverManager.getConnection(url, user, pwd);

url = 3 champs : Le protocole = jdbc Un sous-protocole. Ex: odbc L ’identifiant de la Base. Ex: maBase jdbc:odbc:maBase

Fermeture de la connexion : Conn.close();

Envoi de requête SQL

Grâce à l ’objet Statement Créé via l ’objet Connection :

Statement Stmt = Conn.createStatement();

Envoi de la requête SQL: Stmt = Conn.createStatement()

2 méthodes d ’envoi de requêtes : executeQuery(); // Select ... executeUpdate(); // Insert,

Update, Create ...

Traitement du résultat (1)

Sous forme tabulaire : Un objet Resultset est retourné :

Resultset rs = Stmt.executeQuery("SELECT * FROM TABLE" );

Navigation dans les lignes (enregistrements) Méthode: rs.Next(); // renvoie true tant qu’il y a encore des

lignes

Récupération des champs (colonnes) Méthodes getXXX(NomChamp); // XXX = type de

données (Ex: getInt(), getString() )

Traitement du résultat (2)

Résultat de modifications Le nombre de lignes affectées est

retourné :

int rowCount = Stmt.executeUpdate("INSERT ..." );

Utile pour donner un feedback

(rowCount = 0 Sans effet)

Une erreur SQL lève une exception Java

Traitement du résultat (3)

Cas des procédures stockées Appelées par l ’Objet CallableSatement

CallableStatement cs = Conn.prepareCall("{ call MaProc } ");

Trois types d ’exécutioncs.executeQuery(); // Si retour de

resultsetcs.exexuteUpdate(); // Si modificationscs.execute(); // Résultats multiples

JDBC / ADO

DriverManager Fournisseur OLE DB

Objet java.sql.Connection Objet Connection

Objet java.sql.Resultset Objet Recordset

Objet java.sql.Statement Objet Command

Fields

ExempleConnection Conn = DriverManager(" jdbc:odbc:maBase",

"user", "motPasse");Statement Stmt = Conn.createStatement();Resultset rs = Stmt.executeQuery("Select Entier, Chaine

From Table");

while (rs.Next()){

int iEntier = rs.getInt("Entier");String strChaine = rs.getString("Chaine");

}rs.Close();Stmt.Close();Conn.Close();

L ’alternative JAVA avecIBM WebSphere

IBM WebSphere

WebSphere Application Server

Servlets et J.S.P

Utilisation de Servlets

Bilan

WebSphere Application Server (1) Concurrent direct de Microsoft Serveur d ’Application pour Java Permet l’utilisation

de Servlets de pages Web dynamiques (JSP)

« PlugIn » pour serveur Web Supporte : IBM HTTP Server,

Apache, IIS …

WebSphere Application Server (2) Toute l ’architecture WebSphere

repose sur Java Les Servlets, le contenu des pages

JSP, les composants Java Beans. Respecte le « standard » Java de

SUN (JDK)

On peut effectuer un parallèle avec la technologie Microsoft.

Microsoft / IBM

Internet Information Server I.I.S. W.A.S

ActiveX JAVA BEANS

Active Server Pages

VBScript

JScript

ADO

Java Server Pages

Java JDBC

Ext. de Serveur ISAPI SERVLETS

Les Servlets

Comparable aux Extensions de serveur ISAPI (MS) ou

aux CGI.

Ecrites en Java. Dérivent de l ’API javax.servlet

Récupèrent 2 arguments en entrée HttpServletRequest ~ Request

(Microsoft) HttpServletResponse ~ Response

(Microsoft)

J.S.P.

J.S.P. = Java Server Pages Comparable aux pages ASP

Code Serveur entre <% … %> Finit le VBScript, JScript … on

« code » en Java. ! Le Code JSP est compilé une

seule fois Transformé en servlet. Plus rapide que l ’interprété

Architecture de WAS

HTTP request

HTTP response

IIS

J.S.P. JAVA

BEAN

Java Beans

SGBD

JDBC

W.A.S

Apache

Autre

Recommended