Top Banner
1 Développement d’applications Web : Java EE Java Server Pages (JSP)
53
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: WEB_DYNAMIQUE(J2EE)

1

Développementd’applications Web :

Java EE

Java Server Pages (JSP)

Page 2: WEB_DYNAMIQUE(J2EE)

2

support

public/www

index.html

Le répertoire

3

2

Serveur http

1

4

client

Comment ça fonctionne sans JSPComment ça fonctionne sans JSP

Page 3: WEB_DYNAMIQUE(J2EE)

3

public/www

Conteneur3

2

1

4

fichier.jsp

FichierServlet.class

Serveur http

client

SGBDMySQL

Génération du code html

Comment ça fonctionne avec JSP Comment ça fonctionne avec JSP

Page 4: WEB_DYNAMIQUE(J2EE)

4

• Il existe différents serveurs http– Apache

http://httpd.apache.org– IIS

www.microsoft.com– Information sur le protocole http

www.w3.org/Protocols/• Echange d’information entre serveur et clients

– Pour echanger des informations entre le serveur et, les clients on utilise le protocole HTTP (ensemble de règles de codes).

– Nestcape Navigator, Microsoft Internet Explorer, lynx, iCab, …

Serveur httpServeur http

Page 5: WEB_DYNAMIQUE(J2EE)

5

JSP est un langage de script exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La syntaxe du langage provient de celles du langage C, du Perl et de Java. Ses principaux atouts sont: Une grande communauté de développeurs partageant des centaines de milliers d'exemples de script JSP

La gratuité et la disponibilité du code source (JSP est distribué sous licence GNU GPL)

La simplicité d'écriture de scripts

La possibilité d'inclure le script JSP au sein d'une page HTML (contrairement aux scripts CGi, pour lesquels il faut écrire des lignes de code pour afficher chaque ligne en langage HTML)

La simplicité d'interfaçage avec des bases de données (de nombreux SGBD sont supportés, mais le plus utilisé avec ce langage est MySQL, un SGBD gratuit disponible sur de nombreuses plateformes : Unix, Linux, Windows, MacOs X, Solaris, etc...)

L'intégration au sein de nombreux serveurs web (Apache, etc.).

Introduction Introduction

H. Mouncif, Dep. Info. FSAC 2005 Notes de cours : Technologies du web

Page 6: WEB_DYNAMIQUE(J2EE)

6

Conteneur de servlet Conteneur de servlet

Page 7: WEB_DYNAMIQUE(J2EE)

7

Jakarta TomcatJakarta Tomcat

Tomcat 6.x respecte la spécification Servlet 2.5 et JSP 2.1

Écrit entièrement en Java, il peut donc être utilisé sur n’importe quel système disposant d’une machine virtuelle Disponible gratuitement sous forme d’une licence Open Source

Nécessite obligatoirement une machine virtuelle respectant la spécification 5.0 (jre 1.5.0)

Implémentation de référence de la spécification Java EE.

Il fournit donc les librairies de façon à concevoir des Servlets(javax.servlet.http.HttpServlet)

Page 8: WEB_DYNAMIQUE(J2EE)

8

Hiérarchie des répertoires Tomcat

Page 9: WEB_DYNAMIQUE(J2EE)

9

Architecture de développement d'une application WEB

Une application WEB est contenue dans un répertoire physique sur le serveur

Une application WEB possède une hiérarchie de répertoires et de fichiers

Page 10: WEB_DYNAMIQUE(J2EE)

10

Les instructions JSP peuvent être insérées dans les commandes HTML, ce qui facilite le développement des sites web dynamiques. Lorsque JSP commence à traiter un fichier, il ne fait qu'afficher le texte HTML qu'il rencontre. Un fichier, qu’il soit « .html » ou « .jsp », fonctionnera exactement de la même façon. Si on veut insérer des commandes JSP dans un fichier, il faut indiquer à JSP le début d'une telle séquence, en passant en mode JSP comme tel :

<% /* Scriplet */ %>

<%! /* Declaration */ %>

<%= /* Expression*/ %>

<%@ /* Directive*/ %>

Tout ce qui se trouve entre ces balaises sera considéré par le serveur Web comme étant des commandes JSP.

Syntaxe de baseSyntaxe de base

Page 11: WEB_DYNAMIQUE(J2EE)

11

Code Source 1: Affichage du texte

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">    <head>        <title>Notre première instruction : echo</title>        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />    </head>    <body>        <h2>Affichage de texte avec PHP</h2>        <p>            Cette ligne a été écrite entièrement en (x)HTML.<br />            <%

out.println("Bienvenue sur ma première page JSP"); %>        </p>    </body></html>

Affichage du texte

Syntaxe de baseSyntaxe de base

Le code de baseLe code de baseJSPJSP

Le code de baseLe code de baseJSPJSP

Page 12: WEB_DYNAMIQUE(J2EE)

12

L’objet outout : flot de sortie permet l’écriture sur la réponse

Syntaxe :out.println(texte)

Le séparateur d’instruction En JSP, toutes les instructions doivent se terminer par un point-

virgule.Exemple : <% out.println ("Bonjour"); out.println ("Olivier"); %>

Syntaxe de baseSyntaxe de base

Page 13: WEB_DYNAMIQUE(J2EE)

13

Plusieurs manières de définir des zones de commentaires : /*forme de commentaires 1 */

Attention pas d’imbrication Comme en langage C

<%-- formme de commentaires 2 --%>

// forme de commentaires 3 Comme en langage C++

Les commentaires Les commentaires

Page 14: WEB_DYNAMIQUE(J2EE)

14

FormulairesFormulaires 1 Introduction

Les formulaires servent essentiellement pour la gestion interactive d’un site.

Les formulaires sont à la base des pages web dynamiques. 2 Mise en œuvre d’un formulaire

Un formulaire XHTML est défini entre les balises <form> et </from>Exemple:<form method="post" action="traitement.php">   <p>Texte à l'intérieur du formulaire</p></form> action : le script qui va traiter le formulaire. method : Mode de transmission vers le serveur des informations

saisies dans le formulaire. Get : les données du formulaire sont transmises dans

l’URL. Post : les données du formulaire sont transmises dans le

corps de la requête.

Page 15: WEB_DYNAMIQUE(J2EE)

15

Transmission de paramètres à un JSP : l’objet request

Un formulaire dispose de deux façons pour lancer une requête du client au serveur :

• la méthode GET : les paramètres éventuels sont transmis dans l’URL fournie au navigateur,

• la méthode POST : les paramètres éventuels sont transmis séparément.

Dans une page JSP, on peut utiliser un certain nombre d’objet prédéfinis, en particulier l’objet request, qui sert à identifier le client et sa requête.

FormulairesFormulaires

Page 16: WEB_DYNAMIQUE(J2EE)

16

Objet Request est type classe HttpServletRequest Cet objet encapsule la requête HTTP et fournit des méthodes pour accéder aux informations du client et de l'environnement du serveur.

Exemples de méthodes :

String getMethod() : retourne le type de requête String getServeurName() : retourne le nom du serveur String getParameter(String name) : retourne la valeur d'un paramètre String[] getParameterNames() : retourne le nom des paramètres String getRemoteHost() : retourne l'IP du client String getServerPort() : retourne le port sur lequel le serveur écoute String getQueryString() : retourne la chaîne d’interrogation

… (voir l'API Servlets pour le reste)

FormulairesFormulaires

Page 17: WEB_DYNAMIQUE(J2EE)

17

FormulairesFormulaires La méthode Get

La méthode GET envoie les données sous forme d’une suite de couples nom/valeur ajoutés à l’URL de la page appelée. La partie d’une URL précédée par le caractère point d’interrogation (?) est appelée chaîne de requête. Si la chaîne de requête contient plusieurs éléments, alors chaque élément/valeur doit être séparé par le caractère &amp;. Par ailleurs, elle ne peut pas dépasser 255 caractères. Les données transmises au serveur par la méthode GET sont visibles par les utilisateurs directement dans la barre d’adresse du navigateur.Exemple:http://www.monsite.com/infos.php?jour=27&amp;mois=07&amp;annee=2003&amp;titre=Informations

4 variables seront créées

Page 18: WEB_DYNAMIQUE(J2EE)

18

FormulairesFormulaires Exemple :

infos.html<html><body><p>Lien vers la page appel.php, avec des variables aux

valeurs différentes:</p><p><a href="appel.jsp?

nom=Yossef&amp;prenom=Amine">Lien vers appel.jsp?nom=YossefDupont&prenom=Amine</a></p></body></html>

appel.jsp<p>Bonjour !</p>

<p>Votre nom est <% String nom = request.getParameter ("nom") ;out.println ("BONJOUR " + nom) ; %> , et votre prénom est <% String prenom = request.getParameter ("prenom") ; out.println("prenom"); %>.</p><p>Faites un autre essai, <a href="infos.html">cliquez ici</a>

pour revenir à infos.php</p>

Page 19: WEB_DYNAMIQUE(J2EE)

19

PHP : Les bases PHP : Les bases FormulairesFormulaires La méthode Post

La méthode POST place les informations directement à la suite de l’adresse URL de la page appelée. La partie d’une URL regroupe les informations dans l’en-tête d’une requête HTTP. Ainsi, les données transmises par un formulaire restent confidentielles et n’apparaissent pas dans l’URL. La fonction isset() est très pratique lorsqu’on écrit des traitements de formulaires. Elle permet de déterminer si une variable est affectée (0 compris mais ni NULL ni FALSE). En utilisant cette fonction, il est possible de déterminer les champs d’un formulaire n’ayant pas été renseignés par l’utilisateur. Mais isset() présente une difficulté : le test d’une chaîne de caractères vide renvoie TRUE.

Page 20: WEB_DYNAMIQUE(J2EE)

20

FormulairesFormulaires

Exemple : Transmettre en utilisant un formulaire form.html<form action="cible.jsp" method="post"><label>Entrer votre nom:<input type="text" name="nom" /> <input type="submit" value="Valider" /></label></form>

cible.jsp

<p>Bonjour !</p><p>Je sais comment tu t'appelles. Tu t'appelles <% String nom = request.getParameter ("nom") ;out.println ("BONJOUR " + nom) ; %> !</p><p>Si tu veux changer de prénom, <a href="form.html">clique

ici</a> pour revenir à form.php</p>

Page 21: WEB_DYNAMIQUE(J2EE)

21

FormulairesFormulaires 4 LE FORMULAIRE ET LE SCRIPT PHP

PHP peut intervenir à deux endroits par rapport au formulaire : Pour la construction du formulaire, si ce dernier doit contenir

des informations dynamiques ; Pour le traitement du formulaire ;

Les méthodes utilisables pour faire interagir un formulaire et un script PHP sont :

Placer le formulaire dans un document xHTML, dans ce cas le formulaire ne contient aucun élément dynamique, et indiquer le nom de script qui doit traiter le formulaire dans l’option action de la balise <form>

Placer le formulaire dans un script PHP et faire traiter le formulaire par un autre script PHP ;

Placer le formulaire dans un script PHP et le faire traiter par le même script PHP.

Page 22: WEB_DYNAMIQUE(J2EE)

22

Exemple :<%

out.println ("<html>");out.println ("<head>");out.println ("<title> calcul du factoriel </title>");out.println ("</head>");out.println ("<body>");out.println ("<head>");out.println ("<form method=\"post\"

action=\"traitement.php\">");out.println ("<label> Entrer entier: <input type=\"text\" name=\"nombre\" size=\"30\"/></label>");out.println ("<input type=\"submit\" /> <input

type=\"reset\" />");out.println ("</form>");out.println ("</html>");

%>

FormulairesFormulaires

Page 23: WEB_DYNAMIQUE(J2EE)

23

traitement.php<!%int factoriel(int n){ if(n==0) return 1 ; else return n*(factoriel(n-1));} %><% String E = request.getParameter ("entier") ;Int var= Integer.parseint(E);out.println("factoriel=" +factoriel(var)); %>

FormulairesFormulaires

Page 24: WEB_DYNAMIQUE(J2EE)

24

FormulairesFormulairesExemple: Variables de formulaires complexes

<% String E = request.getParameter("action"); if (E!=null) { out.println("<pre>"); String nom = request.getParameter("nom"); String email = request.getParameter("email"); String ville = request.getParameter("ville"); out.println("nom = "+nom); out.println("email = "+email); out.println("vile = "+ville); out.println("</pre>"); } else { %>

Page 25: WEB_DYNAMIQUE(J2EE)

25

<form action="cible.jsp" method="post"> Nom : <input type="text" name="personal[name]" /><br /> Email : <input type="text" name="personal[email]" /><br /> ville : <br /> <select multiple name="ville[]"> <option value="casa">casa</option> <option value="fes">fes</option> <option value="meknes">meknes</option> </select><br /> <input type="hidden" name="action" value="submitted" /> <input type="submit" name="submit" value="submit me!" /></form><?php}?>

FormulairesFormulaires

Page 26: WEB_DYNAMIQUE(J2EE)

26

Les sessions sont un moyen de sauvegarder et de modifier des variables tout au cours de la visite d’un internaute sans qu’elles ne soient visibles dans l’URL et quelque soient leurs types (tableau, objet…).

Cette méthode permet de sécuriser un site, d’espionner le visiteur, de sauvegarder son panier (e-commerce), etc.

Les informations de sessions sont conservées en local sur le serveur tandis qu’un identifiant de session est posté sous la forme d’un cookie chez le client (ou via l’URL si le client refuse les cookies).

Quelques fonctions :• Object getAttribut(String name) : retourne l’objet associé au nom• setAttribut(String na, Object va) : modifie na par la valeur va• removeAttribut(String na) : supprime l’attribut associé à na• invalidate() : expire la session• logout() : termine la session

Sessions

Page 27: WEB_DYNAMIQUE(J2EE)

27

SessionsLe mécanisme des sessions est vraiment extrêmement simple. Prenons un premier exemple pour voir comment s'enregistre une variable dans une session avec un formulaire simple pour sauvegarder le nom du client qui s'est connecté.

<html><body><form method="POST" action="page2.jsp">Entrez votre nom : <input type="TEXT" name="nom"><input type="SUBMIT" value="OK"></form></body></html>

Vous avez un simple formulaire HTML qui va poster au script page2.jsp le

contenu de la variable nom.

Page 28: WEB_DYNAMIQUE(J2EE)

28

Sessionspage2.php

<%HttpSession session = request.getSession();

String nom = request.getParameter("nom");

If(nom!=null)

session.setAttribute("nom", nom);

%><html><body>Bienvenue sur ce site <% out.println(nom); %>.<br />Regardons ce qui

se passesur la <a href="page3.jsp">page</a> suivante.<br /></body></html>Dans ce script, nous avons donc le démarrage de la session puis

l'enregistrementdans une variable nom de la valeur postée par le formulaire. Enfin, nousenregistrons nom dans une variable de session.

Page 29: WEB_DYNAMIQUE(J2EE)

29

Sessions(Initialisation)Page 3.jsp<%HttpSession session = request.getSession();

String nom = session.getAttribute("nom");%><html><body>Vous êtes toujours parmi nous<% out.println(nom); %>.<br /></body></html>

Dans ce script nous avons toujours le démarrage de session avec cette fois, la

récupération de la variable nom depuis la session.

Page 30: WEB_DYNAMIQUE(J2EE)

30

L'effacement d'une variable de session se fait à l’aide de la fonction

removeAttribut:

Page4.jsp<% HttpSession session = request.getSession(); String nom = session.getAttribut("nom");%><html><body><%removeAttribut("nom"]);if (nom!=null) {out.println("La suppression a échouée ."); }else {out.println("Votre nom a été effacé.)"; }%><br />Repartons en <a

href="page3.jsp">arrière</a>.<br/></body></html>

Sessions (Effacement)

Page 31: WEB_DYNAMIQUE(J2EE)

31

Sessions (Destruction) Page5.php

<?phpHttpSession session = request.getSession();session.logout();?><html><body>

votre session a été détruite</body></html>

Session détruite. . .

Page 32: WEB_DYNAMIQUE(J2EE)

32

PHP et les bases de donnéesPHP et les bases de données

Page 33: WEB_DYNAMIQUE(J2EE)

33

PHP offre un interfaçage très simple entre plusieurs base de données :– Oracle, MySQL, SQLServer– Sybase, Empress, FilePro– Interbase, mSQL, PostgreSQL– ODBC(Acess, MS-SQL, …)

La communication avec les bases de données se fait à l’aide du langage

SQL.

Présentation

• CREATE TABLE : Pour la création d’une table• DELETE : Pour la suppression de lignes d’une table• INSERT : Pour l’insertion d’une nouvelle ligne• SELECT : Pour récupérer des lignes d’une table ou d’une vue• UPDATE : Pour modifier les valeurs dans des champs

Page 34: WEB_DYNAMIQUE(J2EE)

34

MySQL• MySQL est une base de données implémentant le langage de requête

SQL un langage relationnel très connu. Cette partie suppose connue les principes des bases de données relationnelles.

• Il existe un outil libre et gratuit développé par la communauté des programmeurs libres : phpMyAdmin qui permet l’administration aisée des bases de données MySQL avec php. Il est disponible sur : http://sourceforge.net/projects/phpmyadmin/ et http://www.phpmyadmin.net.

• Avec MySQL vous pouvez créer plusieurs bases de données sur un serveur. Une base est composée de tables contenant des enregistrements.

• Plus d'informations sont disponibles à http://www.mysql.com/.

• La documentation de MySQL est disponibles à http://www.mysql.com/documentation/, ainsi qu'en français chez nexen : http://dev.nexen.net/docs/mysql/.

Page 35: WEB_DYNAMIQUE(J2EE)

35

Pour traiter une base de données, MySQL offre trois manières : Utilisation des lignes de commandes Utilisation de l’interface phpMyAdmin Utilisation du langage php

Les opérations de base : Création d’une base de données Création de différentes tables

Gestion du BD avec MySQL

Page 36: WEB_DYNAMIQUE(J2EE)

36

A l’aide des commandes en ligne

Page 37: WEB_DYNAMIQUE(J2EE)

37

Page 38: WEB_DYNAMIQUE(J2EE)

38

Page 39: WEB_DYNAMIQUE(J2EE)

39

Page 40: WEB_DYNAMIQUE(J2EE)

40

Page 41: WEB_DYNAMIQUE(J2EE)

41

java.sql.Connection connect=null; // connexion avec la basejava.sql.Statement S=null; // objet d'émission des requêtesjava.sql.ResultSet RS=null; try{ // connexion à la baseClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connect=java.sql.DriverManager.getConnection("jdbc:odbc:"+"gestion","","");out.println("Connexion avec la base " + "gestion" + " établie");out.println("<br>"); // création d'un objet StatementS=connect.createStatement(); // exécution d'une requête selectString ss = "insert into user(nom, prenom, mail,code,sexe,pays) values('"+n+"','"+p+"','"+m+"','"+c+"','"+s+"','"+p+"')"; S.executeUpdate(ss); } catch (Exception e){ // erreur("Erreur " + e,2); }// fermeture de la basetry{connect.close();System.out.println("Base " + "gestion" + " fermée");} catch (Exception e){}

En utilisant des scripts jsp

Page 42: WEB_DYNAMIQUE(J2EE)

42

En utilisant des scripts jsp

java.sql.Connection connect=null; // connexion avec la base java.sql.Statement S=null; // objet d'émission des requêtes java.sql.ResultSet RS=null; // table résultat d'une requête try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connect=java.sql.DriverManager.getConnection("jdbc:odbc:"+"gestion","",""); out.println("Connexion avec la base " + "gestion" + " établie"); out.println("<br>"); // création d'un objet Statement S=connect.createStatement(); // exécution d'une requête select RS=S.executeQuery("select * from client");

// exploitation de la table des résultats while(RS.next()){ // tant qu'il y a une ligne à exploiter out.println(RS.getString("id")+", "+RS.getString("nom")+", " + RS.getString("embauche")+", "+RS.getString("salaire")); out.println("<br>");} } catch (Exception e){ // erreur("Erreur " + e,2); }

try{ connect.close();System.out.println("Base " + "gestion" + " fermée");} catch (Exception e){}

Page 43: WEB_DYNAMIQUE(J2EE)

43

JDBC est une API du niveau SQL, elle permet d’exécuter des instructions SQL et de retrouver les résultats (s’il y en a) L’API est un ensemble d’interfaces et de classes conçues pour effectuer des actions sur toute base de données (mySQL, ORACLE,SYBASE, ODBC, Derby) Utilisation d’un gestionnaire de pilotes JDBC

Un pilote JDBC spécifique à une base de données implémente l’interface java.sql.Driver Peut dialoguer avec tout pilote conforme à l ’API JDBC où les pilotes sont disponibles à java.sun.com/products/jdbc

JDBC en quatre étapes :• Charger le pilote• Se connecter à la base• Créer et exécuter une requête SQL• Traiter le résultat si nécessaire

Base de données

Page 44: WEB_DYNAMIQUE(J2EE)

44

Le pilote est obligatoire, il convertit les appels JDBC en appels natifs. Il est nécessaire de connaître le nom de la classe du pilote JDBC que l’on veut utiliser :

Pilote ORACLE : oracle.JDBC.driver.OracleDriver

Pilote JDBC/ODBC : sun.jdbc.odbc.JdbcOdbcDriver

Pilote mySQL : com.mysql.jdbc.Driver

Pilote Derby : org.apache.derby.jdbc.ClientDriver

Le chargement du pilote se fait en utilisant la méthode

Class.forName(String Pilote) throws ClassNotFoundException

Base de données

La librairie du pilote doit être placé dans le

repertoire WEB-INF

Page 45: WEB_DYNAMIQUE(J2EE)

45

Pour se connecter à une base de données il faut fournir une URL qui indique où se trouve la base URL ORACLE : jdbc:oracle:thin:host:port:idbase URL ODBC : jdbc:odbc:IDDSN URL mySQL : jdbc:mysql:host URL Derby : jdbc:derby:host

La connexion à la base se fait en utilisant la méthodeDriverManager.getConnection("URL","user","pass") throws SQLException

Connection ma_connexion =DriverManager.getConnection("jdbc:mysql://localhost/Gestion","user","pass");

Connexion à une basemySQL nommée Gestion

Base de données

Page 46: WEB_DYNAMIQUE(J2EE)

46

Page 47: WEB_DYNAMIQUE(J2EE)

47

Application : Création de classe SGBD

Tableau des différentes classes, attributs et méthodes :

class SGBD Nom de la classe mère.

class MySQL Nom de la classe fille, destinée pour le SGBD MySQL.

$SGBD_login Attribut contenant le login de la base de donnée

$SGBD_password Attribut contenant le password de la base de donnée

$SGBD_host Attribut contenant l'hôte de la base de donnée

$SGBD_base Attribut contenant le nom de la base de donnée

function connect() Méthode de connection au SGBD

function requete() Méthode d'envoi de requête au SGBD

function deconnect() Méthode de déconnection au SGBD

$connect Attribut contenant la connection au SGBD

Page 48: WEB_DYNAMIQUE(J2EE)

48

<?php/* Fichier : SGBD.class.php */

class SGBD // Création de la classe mère    {                var $SGBD_login; // Attribut du login du SGBD                 var $SGBD_password; // Attribut du password du SGBD         

        var $SGBD_host; // Attribut de l'hôte du SGBD         

        var $SGBD_base; // Attribut du nom de la BD                  var $connect; // Attribut de connection

             var $requete; // Attribut de requête

        

Classe de base : SGBD

Page 49: WEB_DYNAMIQUE(J2EE)

49

// Définition du constructeur         function SGBD ($login, $password, $host, $base)            {                // Vérification des variables                 if (empty ($login) || empty ($host) || empty ($base))                    {                        // Affichage du message d'erreur                         echo"<b>Erreur :</b> Variable(s) non renseignées!!!";                        exit;                    }

                else {                        // Initialisation des attributs                         $this->SGBD_login = $login;                        $this->SGBD_password = $password;                        $this->SGBD_host = $host;                        $this->SGBD_base = $base;                    }            }    }?>

Classe de base : SGBD

Page 50: WEB_DYNAMIQUE(J2EE)

50

<?php/* Fichier : MySQL.SGBD.class.php */

class MySQL extends SGBD // Création de la classe fille     {

             function connect (){ $connect = mysql_pconnect ($this->SGBD_host, $this-

>SGBD_login, $this->SGBD_password);

                if (!$connect)                    {                        echo "<b>Erreur :</b> Connection à MySQL impossible.";                        exit;                    }                if (!mysql_select_db ($this->SGBD_base, $connect))                    {                        echo "<b>Erreur :</b> Connection à la base de données impossible.";                        exit;                    }                         $this->connect = $connect;             }

}//Fin de la fonction connect()

Classe MySQL expansion de la classe SGBD

Page 51: WEB_DYNAMIQUE(J2EE)

51

function requete ($requete)            {                // Exécution de la requête                 $result = mysql_query ($requete, $this->connect);                        // Vérification de la requête                if (!$result)                    {                        // Affichage du message d'erreur                        echo "<b>Erreur :</b> Impossible d'effectuer la requête.";                        exit;                    }                else {                        // Initialisation de l'attribut de requête                        $this->requete = $result;                    }            } //Fin de la fonction requete()

        function deconnect ()            {                            mysql_close ($this->connect); // Déconnection de la base de données

            } //Fin de la fonction deconnect()

     } //Fin de la classe MySQL ?>

Classe MySQL expansion de la classe SGBD

Page 52: WEB_DYNAMIQUE(J2EE)

52

<?php/* Fichier : SGBD.php */

include ("SGBD.class.php"); // Inclusion de la classe mère

/* Initialisation de la variable du SGBD correspondant */$SQL = "MySQL";

// Inclusion de la classe fille du SGBD correspondantinclude ($SQL.".SGBD.class.php");

/* Création d'un nouvel objet de la classe fille + lancement du constructeur */ /* Les informations sont adaptés à mon serveur, à vous de les modifier pour quelles correspondent avec votre SGBD */

$database = new $SQL('root', '', 'localhost', 'test');

// Connection à la base de données$database->connect();

Classe MySQL expansion de la classe SGBD

Page 53: WEB_DYNAMIQUE(J2EE)

53

/* Exécution d'une requête (création d'une nouvelle base de données). Attention, pour créer une nouvelle base de données, il faut que votre utilisateur ai touts les droits. Ceci n'est qu'un exemple parmi tant d'autres, vous pouvez effectuer n'importe quel requête MySQL avec cette méthode */

$database->requete ("CREATE DATABASE newBase");

// Déconnection de la base de données$database->deconnect();?>

Classe MySQL expansion de la classe SGBD