103
Technologies J2EE et environnements

J2EE

Embed Size (px)

Citation preview

Page 1: J2EE

Technologies J2EE et

environnements

Page 2: J2EE

PLAN

• Matrice de connaissances J2EE.• Présentation J2EE.• Outils de développement.

– BD postgres.– Jboss AS ou Tomcat.– Eclipse IDE.

• Développement de composants Web

– Evolution des applications Web.

Page 3: J2EE

PLAN

• Développement de composants Web J2ee.– Servlets.– JSPs– Taglibs.

• Développement de composants métier J2ee.– EJBs session.– EJB persistance.– EJB message.

• Evaluation– Présentations– Examen

Page 4: J2EE

Introductions

• Vos prénoms.• Vos attentes par rapport à ce cours.• Votre formation :

– Java.– Orienté objets.– Services distants.– XML.

• Vos projets et stages.

Page 5: J2EE

Matrice de connaissances J2EE

Page 6: J2EE

Pourquoi J2EE ?

• Java était initialement dirigée vers les « clients »

• Avantages de Java:– Portabilité inter plateformes– Threading natif, réseaux, gestion de la mémoire– Cycle de développement rapideCes point sont au moins aussi important pour

les serveurs

Page 7: J2EE

Qui produit J2ee ?

Java est un langage crée pas SunMicrosystems

• J2ee est une solution développée par les plus grands constructeurs de logiciels :– Sun– IBM.– Oracle.– Sap.– Borland.– BEA.– …

Page 8: J2EE

Technologie J2EE

• Développée à base de technologies pur Java• 3 plate-formes se présentent:

J2EE.

J2ME.

J2SE.

Page 9: J2EE

Technologie J2EE

• J2EE / JEE

– Java 2 Enterprise Edition, ou Java EE (anciennement J2EE), est une spécification pour la technologie Java de Sun plus particulièrement destinée aux applications d’entreprise. Dans ce but, toute implémentation de cette spécification contient un ensemble d’extensions au Framework Java standard (J2SE, Java Standard Edition) afin de faciliter la création d’applications réparties.

Page 10: J2EE

Technologie J2EE

• J2ME / JME

– J2ME (Java 2 Micro Edition) ou Java ME est le framework Java spécialisé dans les applications mobiles. Des plateformes Java compatibles avec J2ME sont embarquées dans de nombreux téléphones portables et PDA.

Page 11: J2EE

Technologie J2EE

• J2SE / JSE

– J2SE (Java 2 Standard Edition) est le Framework Java destiné aux applications pour poste de travail. Ce Framework contient toutes les API de base, mais également toutes les API spécialisées dans le poste client (Swing, AWT et Java2D), ainsi que des API d'usage général comme JAXP (pour le parsing XML) et JDBC (pour la gestion des bases de données).

Page 12: J2EE

Architecture Java EE

Page 13: J2EE

EJB

• Un composant Entreprise JavaBeans (EJB) est une classe ayant des champs et des méthodes pour mettre en application des modules de la logique métier (Business Logic).

• C’est comme à un module pouvant être employé seul ou avec d'autres entreprise beans pour exécuter la logique métier sur le serveur J2EE.

• Il existe actuellement trois types d'entreprise bean : – les beans session (Session Bean)– les beans entité (Entity Bean)– les beans contrôlés par message (Message Driven Bean)

• Les entreprise beans interagissent le plus souvent avec des bases de données.

Page 14: J2EE

Servlets

• Techonologie Java utilisée pour effectuer des traitements coté serveur en réponse aux requêtes provenant en général de poste clients distants.

• Bien que les servlets puissent répondre à n'importe quel type de requête, elles sont généralement employées pour répondre à des requêtes de type HTTP et qui permettent de retourner dynamiquement des pages html.

Page 15: J2EE

JSP

• Les Java Server Pages (JSP) permettent d'insérer des petits bouts de code Java (scriptlets) directement dans du code html. Une page JSP est un document qui contient deux types de texte:

– Des données statiques (qui peuvent être exprimées en n'importe quel format texte tel que le HTML.

– Des éléments de JSP, qui déterminent comment la page construit le contenu dynamique.

Page 16: J2EE

JCA

• Les connecteurs JCA sont des modules qui se déploient sur les serveurs d'application.

• Ils permettent de connecter un serveur J2EE à un système propriétaire ("legacy system"), et de normaliser les accès et interactions avec ce système.

• L'api JCA défini un contrat entre le serveur d'application et le système, via des interfaces comme le fait jdbc.

Page 17: J2EE

JTA

• JTA / JTS (Java Transaction API/Java Transaction Services) est un API définissant des interfaces standard avec un gestionnaire de transactions.

• Une transaction est une unité d’interaction avec le système de gestion de base de données. Elle est traité d’une manière cohérente et fiable indépendamment des autres transactions.

Page 18: J2EE

JMS

• Java Message Service (JMS) permet d'envoyer et de recevoir des messages de manière asynchrone entre applications ou composants Java.

• Un client peut également recevoir des messages de façon synchrone dans le mode de communication point à point (pour cela, il doit invoquer la méthode receive() qui est bloquante).

Page 19: J2EE

JDBC

• JDBC est une API java disponible depuis la version 1.1 du JDK.

• JDBC est un nom déposé et non un acronyme, même si en général on lui donne la définition suivante : Java DataBase Connectivity.

• JDBC est constituée d'un ensemble d'interfaces et de classes permettant l'accès, à partir de programmes java à des bases de données. Mais, JDBC n'est pas restreinte à ce type de source de données. On peux aussi accéder à des sources de données sous forme de fichiers (fichiers XML par exemple).

Page 20: J2EE

JAAS

• Java Authentication and Authorisation Service est un package fournissant des services d'authentification (login) et d'autorisation (vérification de permissions pour l'exécution de méthodes).

• JAAS est hautement configurable, et permet aux développeurs d'écrire leurs propres modules.

Page 21: J2EE

JavaMAIL

• JavaMail est l'API standard de gestion des courriers électroniques de J2EE.

Page 22: J2EE

SAAJ

• SAAJ (SOAP with Attachments API for Java) est une API Java permettant l'envoi et la réception de messages XML sur le réseau. Ces messages obéissent à la spécification SOAP (Simple Object Access Protocol) .

• SAAJ est souvent utilisée par des API de plus haut niveau comme JAXR et JAX-RPC. Mais, elle peut tout à fait être utilisée de manière indépendante.

• NB: JAXR (Java API for XML Registries) est une API intégrée à J2EE qui permet l'accès à différents types de registres XML.JAX-RPC (Java API for XML-based Remote Procedure Call) est une API permettant de créer des services et clients Web basés XML et RPC.

Page 23: J2EE

JNDI

• JNDI signifie Java Naming and Directory Interface, cette API permet :

– d’accéder à différents services de nommage ou de répertoire de façon uniforme.

– d'organiser et rechercher des informations ou des objets par nommage.

– de faire des opérations sur des annuaires.

Page 24: J2EE

Environnement de Travail

• Pour travailler, on a besoin de: - Eclipse IDE.- Tomcat Server.

• Intégration de Tomcat à Eclipse.

Page 25: J2EE

Eclipse IDE

• Eclipse IDE est un environnement de développement intégré libre extensible, universel et polyvalent, permettant de créer des projets de développement mettant en œuvre n'importe quel langage de programmation.

• Il est principalement écrit en Java.

• Il est modulaire on peut y ajouter des plugins à volonté.exemple : plugin pour modélisation UML …

Page 26: J2EE
Page 27: J2EE

Avantages d’Eclipse IDE

- Editeur de texte.- Compilateur (javac pour java).- Assistant au développement .- Facilité d’intégration d’autre

fonctionnalités..- Débogueur.

Page 28: J2EE

Apache Tomcat

• Apache Tomcat est un conteneur libre de servlet Java EE. Issu du projet Jakarta, Tomcat est désormais un projet principal de la fondation Apache.

• Tomcat implémente les spécifications des servlets et des JSP de Sun Microsystems. Il inclut des outils pour la configuration et la gestion, mais peut également être configuré en éditant des fichiers de configuration XML.

Page 29: J2EE

Arborescence des répertoires de Tomcat

• L'installation par défaut de Tomcat comprend les répertoires suivants :– bin : Scripts et exécutables pour différentes tâches :

démarrage (startup), arrêt, etc..– common : Classes communes que les applications Web

utilisent ;– conf : Fichiers de configuration au format XML et les DTD que

ces fichiers XML utilisent .– logs : Journaux des applications Web et de Catalina .– server : Classes utilisées seulement par Catalina.– shared : Classes partagées par toutes les applications Web.– webapps : Répertoire contenant les applications web (et les

éventuels .war).– work : Fichiers et répertoires temporaires (le cache).

Page 30: J2EE
Page 31: J2EE

C’est quoi JSP ?

• JSP = Java Server Pages• Une JSP est un fichier contenant du code

HTML et des fragments de code Java exécutés sur le moteur de Servlets.

• Comparable aux langages côtés serveur de type PHP, ASP, …

• Les pages JSP sont converties en Servlet par le moteur de Servlets lors du premier appel à la JSP

Page 32: J2EE

Cycle de Vie d’une JSP

Page 33: J2EE

Cycle de Vie d’une JSP

Page 34: J2EE

Objets Implicites dans une JSP

• Lors de la transformation d’une JSP en Servlet par le conteneur, plusieurs objets implicites sont disponibles:

Page 35: J2EE

Notre première JSP

- Création de la première JSP.- Insertion de message en utilisant:

- HTML.- L’objet implicite « out ».

- Redirection vers une autre page.

Page 36: J2EE

Notre première JSP

Page 37: J2EE

Les Tags JSP

• Les tags JSP permettent de différencier le code HTML au code JAVA, on trouve:

– Tag de directive : <%@ … %>– Tag de commentaire: <%-- commentaire

--%>– Tag de déclaration: <%! … %>– Tag de scriptlet: <%... %>– Tag d’expression: <%= … %>

Page 38: J2EE

Les Directives JSP

• Les directives contrôlent comment le serveur WEB doit générer la Servlet.

• Elles sont placées entre les symboles <%@ et %>

• Les directives suivantes sont disponibles:– Include – Taglib– Page

Page 39: J2EE

Directives JSP: include

• Cette inclusion se fait au moment de la conversion.

<%@ include file="unAutreFichier" %>

• Tout le contenu du fichier externe est inclus comme s’il était saisi directement dans la page JSP.

Page 40: J2EE

Directives JSP: page

• La directive page définit les attributs spécifiques à une page.– Import : importe un paquetage Java. Cette directive

résulte en une instruction import dans la Servlet.<%@ page import="java.util.*, java.text.*" %>

– Langage: définit le langage de script utilisé dans la page.

– contentType: définit le type du contenu de la page générée.

<%@ page contentType="text/plain" %>

– errorPage: indique la page à afficher si une exception se produit pendant le traitement de la requête HTTP.

<%@ page errorPage="toto.jsp" %>

– isErrorPage: vaut true si la page est une erreur et false pour une page normale.

<%@ page isErrorPage=false %>

Page 41: J2EE

Eléments de script JSP: commentaire

• Cet élément de script est utilisé pour faire un commentaire

dans le code JSP.• Le texte dans un commentaire JSP ne sera pas

envoyé auclient ni compilé dans la Servlet.• Les commentaires sont placés entre les symboles<%-- et --%> .

Page 42: J2EE

Eléments de script JSP: déclaration

• Une déclaration permet d’insérer du code dans la classe de la Servlet.

• Les déclarations sont placées entre <%! et %>• Elle peut être utilisée pour:

– Déclarer un attribut de classe.– Spécifier et implémenter des méthodes.

• Les attributs et les méthodes déclarées dans la page JSP sontutilisables dans toute la page JSP.

Page 43: J2EE

Eléments de script JSP: scriptlet

• Les scriplets sont placées entre les symboles <% et %>

• Tout code java a accès :– aux attributs et méthodes définis par le tag déclaration

<%! … %>– aux objets implicites.

Page 44: J2EE

Eléments de script JSP: expression

• Sert à évaluer une expression et à renvoyer sa valeur.• Les expressions sont placées entre les symboles <%= %>• Retourne une valeur String de l’expression.• Correspond à un scriptlet comme <% out.println(…); %>

Page 45: J2EE

Eléments de script JSP: scriptlets & éléments implicites• Ce sont des objets identifiés par des noms de variables

uniques au sein de la JSP:– request : requête courante– response : réponse courante– session : session courante– out : flot de sortie permet l’écriture sur la réponse– application : contient des méthodes log() permettant d'écrire

des messages dans le journal du contenu (ServletContext).– pageContext : utilisé pour partager directement des variables

entre des pages JSP et supportant les beans et les balises.– exception : disponible uniquement dans les pages erreurs

donnant information sur les erreurs

Page 46: J2EE

Exercices

• Ecrire une JSP qui retourne toutes les propriétés retournées par System.getProperties.

• Ecrire un formulaire qui réceptionne et retourne des données.

Page 47: J2EE

Eléments de script JSP: scriptlets & éléments

implicitesExemple : JSP qui récupère des informations du client

Objets implicites uniquementvisibles dans une scriplet ouune expression JSP

Page 48: J2EE

JSP en Servlet

Page 49: J2EE

JSP en Servlet

Page 50: J2EE

JSP en Servlet

Page 51: J2EE

Cycle de Vie d’une JSP

• Le cycle de vie d’une JSP est identique à celui d’une servlet:

– La méthode jspInit() est appelée après le chargement de la page.

– La méthode _jspService() est appelée à chaque requête.

– La méthode jspDestroy() est appelé lors du déchargement.

Page 52: J2EE

Technique de gestion des erreurs

• Permet de contrôler la gestion des erreurs pendant l'exécution de l'application WEB.

• Les erreurs sont déclenchées par l'intermédiaire des exceptions et transmises à une page d'erreur.

• La définition de la page d'erreur se fait par la directive page et l'attribut errorPage.

Page 53: J2EE

Technique de gestion des erreurs

• Une page JSP est définie comme une page erreur par la directive page et l'attribut isErrorPage.

• Possibilité de manipuler l'exception qui a été lancée par l'objet implicite exception (Exception).– exception.getMessage() : renvoie le message

d'erreur décrivant l'exception.– exception.printStackTrace() : retourne la liste des

appels de méthodes ayant conduit à l'exception.

Page 54: J2EE

Technique de gestion des erreurs

Page 55: J2EE

JSP et Actions

• Les actions permettent de faire des traitements au moment où la page est demandée par le client.

– utiliser des Java Beans.– inclure dynamiquement un fichier.– rediriger vers une autre page.

• Les actions sont ajoutées à la page JSP à l'aide d'une syntaxe d'éléments XML (définis par des balises personnalisées).

Page 56: J2EE

Java Beans

• Permet de coder la logique métier de l'application WEB.

• L'état d'un Bean est décrit par des attributs appelés propriétés.

• La spécification des Java Beans définit les Beans comme des classes qui supportent principalement:– Introspection : permet l'analyse d'un Bean (nombre de

propriétés).– Événements : métaphore de communication.– Persistance : pour sauvegarder l'état d'un Bean.

Page 57: J2EE

Java Beans

• Les Java Beans sont des classes Java respectant un ensemble de directives.– Un constructeur public sans argument.– Les propriétés d'un Bean sont accessibles au travers de

méthodes getXXX (lecture) et setXXX (écriture) portant le nom de la propriété.

• Lecture et écriture des propriétés:– type getNomDeLaPropriété() : pas de paramètre et son type

est celui de la propriété.– void setNomDeLaPropriété(type) : un seul argument du type de la

propriété et son type de retour est void.

Page 58: J2EE

Java Beans• Exemple : le retour de la classe Voiture

Page 59: J2EE

Java Beans

• Pour déclarer et allouer un Java Beans dans une page JSP il faut employer l'action <jsp:useBean>.

– id = "nom de l'instance" : nom de l'instance pour identification.

– class = "Nom de la classe" : package du Bean.– scope = "attribut" : champ d'existence de l'objet Bean.

• request : Bean valide pour la requête et peut être transmise (forward).

• page : idem request sans transmission (le cas de l’objet pageContext).

• session : Bean ayant la durée de vie de la session.• application : Bean créée pour l'application WEB courante.

Page 60: J2EE

Java Beans et JSP: lecture propriétés

• Pour lire une propriété du Bean deux éléments sont utilisés:– La référence du Bean définie par l'attribut id– Le nom de la propriété

• Deux manières existent pour interroger la valeur d'une propriété et la convertir en String:– En utilisant un tag action <jsp:getProperty>

– En utilisant l'éléments de scripts JSP : expression

Page 61: J2EE

Java Beans et JSP: écriture propriétés

• Modification de la valeur d'une propriété en utilisant le tag action <jsp:setProperty>.

• Modification de l'ensemble de propriétés suivant les paramètres fournis par la requête.

Page 62: J2EE
Page 63: J2EE

Qu’est ce qu’une servlet ?

• Composant logiciel écrit en Java fonctionnant du coté serveur.

• Au même titre nous trouvons– CGI (Common Gateway Interface).– Langages de script coté serveur PHP, ASP (Active Server

Pages).

• Permet de gérer des requêtes HTTP et de fournir au client une réponse HTTP.

• Une Servlet s’exécute dans un moteur de Servlet ou conteneur de Servlet permettant d’établir le lien entre la Servlet et le serveur Web.

• Une Servlet s’exécute par l'intermédiaire d'une machine virtuelle

Page 64: J2EE

Architecture Servlets

Page 65: J2EE

A quoi ça sert une servlet ?

• Créer des pages HTML dynamiques.• Effectuer des tâches de type CGI qui sont des

traitements applicatifs coté serveur WEB:– Manipulation d’une base de données– Gestion d’un système de surveillance, ...

• Respecter les principes d’une architecture : écrire une application en Java dont l’interface utilisateur est dans le client:– Applet (SWING)– Téléphone portable (WAP)– Navigateur (HTML)

Page 66: J2EE

Avantages des servlets

• Portabilité– Technologie indépendante de la plate-forme et

du serveur• Puissance

– Disponibilité de l’API de Java– Manipulation d’images, connectivité aux bases de

données (JDBC), …

• Efficacité – Une Servlet est chargée une seule fois.– Une Servlet conserve son état (connexions à des bases

de données)

• Sûreté– Typage fort de Java– Gestion des erreurs par exception

Page 67: J2EE

Première Servlet: HelloWorld

Page 68: J2EE

L’API Servlet

• Une Servlet doit implémenter l'interface javax.servlet.Servlet et javax.servlet.ServletConfig.

• Plus simplement l'API Servlet fournit deux classes qui proposent déjà une implémentation:– GenericServlet : pour la conception de

Servlets indépendantes du protocole.– HttpServlet : pour la conception de Servlets

spécifiques au protocole HTTP.

Page 69: J2EE

L'API Servlet : la classe GenericServlet

• Une Servlet qui hérite de GenericServlet est une Servlet indépendante du protocole.

• Obligation d'implémenter la méthode service(…) qui reste le principal point d'entrée du client vers le serveur.

• Besoin de vérifier explicitement le type de protocole.

Page 70: J2EE

L'API Servlet : la classe HttpServlet

• Dans la suite du cours nous allons utiliser uniquement des Servlets qui réagissent au protocole HTTP d'où l'utilisation de la classe HttpServlet.

• HttpServlet redéfinit la méthode service(…)– service(…) lit la méthode (GET, POST, …) à partir de la

requête.– Elle transmet la requête à une méthode appropriée de

HttpServlet destinée à traiter le type de requête (GET, POST, …)

Page 71: J2EE

HttpServlet : méthodes de traitement de

requêtes• Plusieurs méthodes sont fournies pour traiter les

différents types de requêtes (GET, POST, …).• Elles sont appelées méthodes de traitement

de requêtes• Elles ont un en-tête identique doXXX(…) où XXX

correspond au type de requête– doPost(…) est la méthode pour traiter les requêtes de

type POST– doGet(…) est la méthode pour traiter les requêtes de

type GET– doHead(…), doTrace(…), …

• Selon le type de requête (GET ou POST) le concepteur redéfinit la méthode concernée.

Page 72: J2EE

HttpServlet : requête et réponse

• La méthode service(…) et par conséquent les méthodes de traitement de requêtes (ex : doPost(…)) sont appelées.– un objet requête.– un objet réponse.

Page 73: J2EE

HttpServlet : objet requête

HttpServletRequest• HttpServletRequest hérite de ServletRequest• Cet objet encapsule la requête HTTP et fournit

des méthodes pour accéder aux informations du client 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 les

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)

Page 74: J2EE

HttpServlet : objet requête

HttpServletRequest• Exemple : Servlet qui affiche un certains nombre d'informations issues de HttpServletRequest.

Page 75: J2EE

HttpServlet : objet réponse

HttpServletResponse• HttpServletResponse hérite de ServletResponse

• Cet objet est utilisé pour construire un message de réponse HTTP renvoyé au client, il contient:

– les méthodes nécessaires pour définir le type de contenu, en-tête et code de retour.

– un flot de sortie pour envoyer des données (par exemple HTML) au client.

• Exemples de méthodes– void setStatus(int) : définit le code de retour de la réponse– void setContentType(String) : définit le type de contenu MIME– ServletOutputStream getOutputStream() : flot pour envoyer des

données binaires au client.– void sendRedirect(String) : redirige le navigateur vers l'URL

Page 76: J2EE

HttpServlet : objet réponse

HttpServletResponse• Exemple 1 : écrit un message de type TEXT au client– Utilisation de la méthode PrintWriter getWriter()

Page 77: J2EE

HttpServlet : objet réponse

HttpServletResponse• Exemple 2 : effectue une re-direction vers un site web– Utilisation de la méthode sendRedirect(String)

Page 78: J2EE

HttpServlet : objet réponse

HttpServletResponse• Exemple 3 : effectue un téléchargement de fichier sur le client

Page 79: J2EE

HttpServlet : objet réponse

HttpServletResponse• Exemple 4 : effectue un rechargement automatique de la page (auto-refresh)

Page 80: J2EE

Servlets et formulaires : du côté HTML

• Utilisation de la balise <FORM> </FORM>– Option METHOD : type de requête GET ou POST.– Option ACTION : l’URL où envoyer les données.

• Utilisation de composants IHM pour saisir des informations– Contenu à l’intérieur de la balise FORM

• Chaque composant est défini au moyen d’une balise particulière SELECT, INPUT, TEXTAREA, …

Page 81: J2EE

Servlets et formulaires : du côté HTML

• A l’intérieur de chaque balise du composant (SELECT par exemple)

• plusieurs options et notamment une (NAME) qui permet d’identifier le composant : NAME="mon_composant"

• Les données sont envoyées quand l’utilisateur clique sur un bouton de type SUBMIT

Page 82: J2EE

Servlets et formulaires : du côté HTML

Page 83: J2EE

Servlets et formulaires : du côté Servlet

• Pour lire les données du formulaire : traiter la requête

• Accéder par l’intermédiaire de l’objet HttpServletRequest aux Paramètres – String getParameter(String p) : retourne la valeur du

paramètre p– String[] getParamterValues(String p) : retourne les valeurs du

paramètre p

Page 84: J2EE

Architecture de développement d'une

application WEB• Une application WEB peut contenir plusieurs Servlets• Pour tester et déployer une Servlet, il faut un système

d'exécution appelé conteneur de Servlets ou moteur de Servlets.

• Le conteneur réalise le lien entre la Servlet et le serveur WEB

– Transforme code Java (bytecode) en HTML– Associe à des URL's virtuels une Servlet

Page 85: J2EE

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 86: J2EE

Le fichier web.xml : c’est quoi ?

• Le fichier web.xml regroupe les informations de fonctionnement de l'application WEB (description de déploiement du contexte).

• Utilisation du format XML– eXtensible Markup Language– Syntaxe universelle pour la structuration des données créée

par le World Wide Web Consortium (W3C) en 1996.– Langage basé sur des balises permettant de donner une

signification au document (HTML s'intéresse essentiellement à l'affichage)

– Extensible par la possibilité de créer de nouvelles balises– Balises XML sensibles à la casse et à la rigueur (balise

ouvrante = obligation d'une balise fermante)– La structure du document est défini par un fichier XSD (XML

Schema Description)

Page 87: J2EE

Le fichier web.xml : c’est quoi ?

Page 88: J2EE

Le fichier web.xml : c’est quoi ?

Page 89: J2EE

Le fichier web.xml : c’est quoi ?

Page 90: J2EE

Se connecter aux bases de données

• Utilisation de l’API JDBC (Java DataBase Connectivity)– 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

Page 91: J2EE

Se connecter aux bases de données

• 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

Page 92: J2EE

Se connecter aux bases de données

• 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

Page 93: J2EE

Se connecter aux bases de données : charger un

pilote• 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

Page 94: J2EE

… : se connecter à labase

• 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éthode– DriverManager.getConnection("URL","user","pass") throws

SQLException

Page 95: J2EE

… : créer et exécuterune requête SQL

• La requête ne peut être créée et exécutée que si le pilote et la connexion à la base se sont valides.

• Il faut avant tout créer une instruction SQL sur la base

• Il faut enfin exécuter la requête en écrivant concrètement le requête SQL executeQuery(String requete) throws SQLException

Page 96: J2EE

… : traiter le résultat

• Enfin il faut traiter un objet de type ResultSet il existe de nombreuses méthodes:– boolean next() : avancer d’une ligne de la table résultante– String getString(String columName) : interroger un champ

String par son nom– String getString(int columnIndex) : interroger un champ

String par son index– int getInt(…) : interroger un champ Integer par son nom ou

index– …

Page 97: J2EE

Se connecter aux bases de données

Page 98: J2EE

Centralisation de l’accès à la BD

• Lors de l'accès à une base de données depuis une Servlet, l'établissement de la connexion peut prendre quelques secondes. Ce délai augmente le temps de réponse de votre Servlet.

• La gestion d'un pool de connexions par Apache Tomcat permet de réduire ce temps puisque les connexions à la base de données sont déjà établies et gérées par Apache Tomcat qui fournit à la Servlet des objets DataSource.

• La configuration d’un pool de connexion se fait sur plusieurs étapes.

Page 99: J2EE

Étape 1:

• Préparer le driver correspondant à la base de données utilisée et l’ajouter dans le dossier « /common/lib »

Page 100: J2EE

Étape 2:

• Configuration de la ressource partagée: (context.xml)

Page 101: J2EE

Étape 3:

• Configuration dans le fichier web.xml de l’application web:

Page 102: J2EE

Accès au data-source

• L’accès au data-source se fait moyennant JNDI:

Page 103: J2EE

Liste de projets

Tous les mini-projets proposés seront champs d’application de tous les principes utilisés tout au long du cours « introduction à J2EE ».-- Clients d’une agence de voyage.-- Produits d’un stock.-- Voyages d’une agence de tourisme.-- Agence de livraison de colis.-- Employés au sein d’une entreprise.