Upload
roxane-huguet
View
107
Download
2
Embed Size (px)
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