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.
Clients (Navigateurs) Serveur Web (2) Serveur WEB [ Port 80 ] HTTP Clients (Navigateurs) Réseau local
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 : Ex: Sur Unix 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) Soumission du formulaire <FORM name=form METHOD=POST action=‘ cgi.exe ’> <INPUT type=text name=ess1> <INPUT type=’SUBMIT ’ value=‘ Soumettre ’ name="Submit"> </FORM> Soumission du formulaire Passage des valeurs de contrôles sur l ’entrée standard Ecriture dynamique de la page HTML sur la sortie standard Script CGI
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 4 champs Field 1 Field 2 Field 3 Field 4 Fields RecordSet 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
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, adLockOptimistic while not rcs.EOF i = rcs.Fields("Entier").Value str = rcs.Fields(" Chaine").Value rcs.MoveNext wend rcs.Close conn.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écution cs.executeQuery(); // Si retour de resultset cs.exexuteUpdate(); // Si modifications cs.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
Exemple Connection 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 avec IBM 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 Ecrites en Java. 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 W.A.S IIS J.S.P. JAVA Apache Java Beans Autre JDBC HTTP request HTTP response IIS J.S.P. JAVA BEAN Java Beans SGBD JDBC W.A.S Apache Autre