Vous êtes sur la page 1sur 103

Technologies J2EE et environnements

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.

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

Introductions

• Vos prénoms.

• Vos attentes par rapport à ce cours.

• Votre formation :

– Java.

– Orienté objets.

– Services distants.

– XML.

• Vos projets et stages.

Matrice de connaissances

J2EE

Matrice de connaissances 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 rapide

gestion de la mémoire – Cycle de développement rapide Ces point sont au moins aussi important

Ces point sont au moins aussi important pour les serveurs

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.

 

: – Sun – IBM. – Oracle. – Sap. – Borland. – BEA. –   …
: – Sun – IBM. – Oracle. – Sap. – Borland. – BEA. –   …

Technologie J2EE

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

J2EE.

J2ME.

J2SE.

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.

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.

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).

Architecture Java EE

Architecture Java EE

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.

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.

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.

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.

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.

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).

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

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.

JavaMAIL

JavaMail est l'API standard de gestion des courriers électroniques de 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.

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.

Environnement de Travail

Pour travailler, on a besoin de:

- Eclipse IDE. - Tomcat Server.

Intégration de Tomcat à Eclipse.

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 …

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.

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.

pour la configuration et la gestion, mais peut également être configuré en éditant des fichiers de

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).

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

Cycle de Vie d’une JSP

Cycle de Vie d’une JSP

Cycle de Vie d’une JSP

Cycle de Vie d’une JSP

Objets Implicites dans une JSP

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

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

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.

Notre première JSP

Notre première JSP

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: <%= … %>

%>

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

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.

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.

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é au client ni compilé dans la Servlet.

Les commentaires sont placés entre les symboles <%-- et --%> .

au client ni compilé dans la Servlet. Les commentaires sont placés entre les symboles <%-- et

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 sont utilisables dans toute la page JSP.

des méthodes. • Les attributs et les méthodes déclarées dans la page JSP sont utilisables dans

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.

–

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(…); %>

Retourne une valeur String de l’expression. • Correspond à un scriptlet comme <% out.println(…); %>

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

beans et les balises. – exception : disponible uniquement dans les pages erreurs donnant information sur

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.

Eléments de script JSP:

scriptlets & éléments implicites

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

Objets implicites uniquement visibles dans une scriplet ou une expression JSP
Objets implicites
uniquement
visibles dans une
scriplet ou
une expression JSP

JSP en Servlet

JSP en Servlet

JSP en Servlet

JSP en Servlet

JSP en Servlet

JSP en Servlet

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.

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.

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

Technique de gestion des erreurs

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

par la directive page et l'attribut isErrorPage . • Possibilité de manipuler l'exception qui a été

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.

– exception.printStackTrace() : retourne la liste des appels de méthodes ayant conduit à l'exception.
– exception.printStackTrace() : retourne la liste des appels de méthodes ayant conduit à l'exception.

Technique de gestion des erreurs

Technique de gestion des erreurs

JSP et Actions

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

au moment où la page est demandée par le client. – utiliser des Java Beans. –

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).

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

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.

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.

Java Beans

Exemple : le retour de la classe Voiture

Java Beans • Exemple : le retour de la classe Voiture

Java Beans

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

JSP il faut employer l'action <jsp:useBean>. – id = "nom de l'instance" : nom de

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.

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 un tag action <jsp:getProperty>

En utilisant un tag action <jsp:getProperty> – – En utilisant l'éléments de scripts JSP : expression

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

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

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

en utilisant le tag action <jsp:setProperty>. • Modification de l'ensemble de propriétés suivant

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

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

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.

Architecture Servlets

Architecture Servlets

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)

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

ar exce tion

Première Servlet:

HelloWorld

Première Servlet: HelloWorld

L’API Servlet

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

javax.servlet.Servlet et javax.servlet.ServletConfig . • Plus simplement l'API Servlet fournit deux classes

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

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.

le principal point d'entrée du client vers le serveur. • Besoin de vérifier explicitement le type

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.

lit la méthode (GET, POST, …) à partir de la requête. Elle transmet 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, …)

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

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.

–

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)

HttpServlet : objet requête

HttpServletRequest

Exemple : Servlet qui affiche un certains nombre

d'informations issues de HttpServletRequest.

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

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

HttpServlet : objet réponse

HttpServletResponse

Exemple 1 : écrit un message de type TEXT au client

Utilisation de la méthode PrintWriter getWriter()

Exemple 1 : écrit un message de type TEXT au client – Utilisation de la méthode

HttpServlet : objet réponse

HttpServletResponse

Exemple 2 : effectue une re-direction vers un site web

Utilisation de la méthode sendRedirect(String)

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

HttpServlet : objet réponse

HttpServletResponse

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

• HttpServlet : objet réponse HttpServletResponse Exemple 3 : effectue un téléchargement de fichier sur le

HttpServlet : objet réponse

HttpServletResponse

Exemple 4 : effectue un rechargement automatique de la page (auto-

refresh)

: objet réponse HttpServletResponse Exemple 4 : effectue un rechargement automatique de la page (auto- refresh)

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, …

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

Servlets et formulaires :

du côté HTML

Servlets et formulaires : du côté HTML

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

–

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

–

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.

un répertoire physique sur le serveur. • Une application WEB possède une hiérarchie de répertoires et

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)

Le fichier web.xml : c’est quoi ?

Le fichier web.xml : c’est quoi ?

Le fichier web.xml : c’est quoi ?

Le fichier web.xml : c’est quoi ?

Le fichier web.xml : c’est quoi ?

Le fichier web.xml : c’est quoi ?

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

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

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

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

le nom de la classe du pilote JDBC que l’on veut utiliser – Pilote ORACLE :

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

Le chargement du pilote se fait en utilisant la méthode – Class.forName(String Pilote) throws ClassNotFoundException

… : se connecter à la base

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

en utilisant la méthode DriverManager.getConnection("URL","user","pass") throws SQLException –

… : créer et exécuter une 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 avant tout créer une instruction SQL sur la base • Il faut enfin exécuter

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

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

… : 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

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

Se connecter aux bases de données

Se connecter aux bases de données

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.

Étape 1:

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

Étape 2:

Configuration de la ressource partagée:

(context.xml)

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

Étape 3:

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

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

Accès au data-source

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

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

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.