WEB_DYNAMIQUE(J2EE)
-
Upload
karim-el-maanani -
Category
Documents
-
view
412 -
download
1
Transcript of WEB_DYNAMIQUE(J2EE)
![Page 1: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/1.jpg)
1
Développementd’applications Web :
Java EE
Java Server Pages (JSP)
![Page 2: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/2.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/3.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/4.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/5.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/6.jpg)
6
Conteneur de servlet Conteneur de servlet
![Page 7: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/7.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/8.jpg)
8
Hiérarchie des répertoires Tomcat
![Page 9: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/9.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/10.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/11.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/12.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/13.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/14.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/15.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/16.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/17.jpg)
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 &. 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&mois=07&annee=2003&titre=Informations
4 variables seront créées
![Page 18: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/18.jpg)
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&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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/19.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/20.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/21.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/22.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/23.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/24.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/25.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/26.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/27.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/28.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/29.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/30.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/31.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/32.jpg)
32
PHP et les bases de donnéesPHP et les bases de données
![Page 33: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/33.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/34.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/35.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/36.jpg)
36
A l’aide des commandes en ligne
![Page 37: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/37.jpg)
37
![Page 38: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/38.jpg)
38
![Page 39: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/39.jpg)
39
![Page 40: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/40.jpg)
40
![Page 41: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/41.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/42.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/43.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/44.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/45.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/46.jpg)
46
![Page 47: WEB_DYNAMIQUE(J2EE)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/47.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/48.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/49.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/50.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/51.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/52.jpg)
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)](https://reader033.fdocuments.in/reader033/viewer/2022060113/5571f97749795991698fa3e7/html5/thumbnails/53.jpg)
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