Cours JEE
Cours JEE
Cours JEE
Programmation OO
Institut Supérieur des Etudes Technologiques de Mahdia
Avancée
Architecture JEE
Mme Sameh HBAIEB TURKI
Maître technlogue
Département: Technologies de l’informatique
Présentation du cours
Objectif général:
A l’issue de ce cours, l’étudiant sera capable de développer une application
web pouvant s'exécuter dans l'un des nombreux conteneurs du marché : IBM
WebSphere, BEA WebLogic, JBoss server, Apache Tomcat, Sun appServe.
Objectifs spécifiques:
- Connaître les fondements des architectures n-tiers et l'architecture J2EE,
- Savoir utiliser les technologies Servlet/JSP,
- Connaître les bonnes pratiques pour développer des accès aux bases de
données avec JDBC et les pools de connexions,
- Connaître les bases de la bibliothèque JSTL.
Présentation du cours
Pré-requis:
Cette matière requiert que l'étudiant ait suivi une formation sur la
programmation Orientée Objet et la Programmation Web.
Plan du cours:
1. Introduction au JEE
2. Les servlets
3. Les pages JSP
4. Les classes Java Beans
5. Le patron de conception MVC
6. L’accès aux données avec JDBC
Chapitre 1:
Introduction au JEE
Evolution du web
Inconvénients :
- En général, les divers services s'appuient sur des technologies très variées,
d'où la nécessité de gérer l'hétérogénéité et l'interopérabilité des services.
- Nécessité d’utiliser des framework et/ou outils supplémentaires
- Les services étant plus découpés et distribués, pose plus de problèmes liés à
la distribution
Survol sur les architectures des applications web
Une application 3/N-tiers intègre un grand nombre de technologies :
- Présentation : HTML/CSS, librairies graphiques...
- Applicatif : objets, composants, scripts exécutables, services ...
- Données : fichiers XML, SGBDR, ...
- Protocoles de communication : RPC/RMI, HTTP, messages, ...
JavaEE (Java Enterprise Edition) est une plateforme qui permet de faciliter
le développement d’application d’entreprise en fournissant un
environnement d’exécution et des composants sous forme d’API
Présentation de l’architecture JavaEE
J2EE s’appuie sur le langage Java :
- Java est un langage orienté objet dont la syntaxe est dérivé du C et dont la
conception résulte de l’expérience de divers langages (Smalltalk, Ada, C++ …)
- Java est un langage semi-compilé. Le code obtenu après compilation
s’appelle du byte-code et ce code est interprétable par une JVM (Java Virtual
Machine). Cependant, Java peut également être complètement compilé
(transformé en langage machine) si nécessaire.
- Java est portable sur toutes les plate-formes puisqu’il existe des machines
virtuelles pour chacune. (Les navigateurs intègrent des machines virtuelles
java).
- Java est un langage conçu, à l’origine, pour être utilisé via un réseau.
Présentation de l’architecture JavaEE
JavaEE s’appuie sur des concepts objet :
- Classe : type d’objet caractérisé par sa structure de données (attributs) et son
comportement (méthodes).
- Objet : instance de classe.
- Héritage : Mécanisme permettant à une classe d’objets de bénéficier de la
structure de données et du comportement d’une classe "mère", tout en lui
permettant de les affiner et ce, afin de prendre en compte les spécificités de la
classe "fille", sans avoir cependant à redéfinir ce que les deux classes ont de
commun.
- Abstraction : Mécanisme permettant la dissociation entre la déclaration
d’une classe et son implémentation.
- Polymorphisme : Mécanisme permettant d’associer à un comportement, une
implémentation différente en fonction de l’objet auquel on se réfère.
- Encapsulation : Mécanisme permettant de dissimuler les détails du
fonctionnement interne d’une classe aux autres classes.
Les composants JavaEE
L’architecture JEE est une architecture d’application distribuée à base de
composants.
Les applications Java EE sont constituées de composants.
Un composant Java EE est une entité logicielle fonctionnelle autonome qui
est assemblée dans une application Java EE avec ses classes et fichiers
associés et qui communique avec d’autres composants.
La spécification Java EE définie les composants Java EE suivants :
- Les composants Clients ou tiers Client qui sont exécutés côté client
- Les composants Web ou tiers Web exécutés côté serveur (Moteur web)
- Les composants métier ou tiers Métier exécutés côté serveur (Moteur
d’application)
Les composants JavaEE
Les composants clients
Les clients web sont composés de deux parties,
(1) des pages web dynamiques contenant différents types de langage de
balise (HTML, XML, etc.) et générées par des composants web s’exécutant
dans la couche tiers Web et
(2) un navigateur web qui présente ou affiche les pages envoyées par le
serveur.
Un client web est parfois appelé client léger. Les clients légers ne consultent
généralement pas les bases de données, n’exécutent pas de règles métiers
complexes ou ne se connectent pas aux applications héritées.
Lorsqu’on utilise un client léger, ces opérations lourdes sont déchargées sur
les java beans s’exécutant sur le serveur Java EE, où ils peuvent tirer parti de
la sécurité, la vitesse, des services et de la fiabilité des technologies Java EE.
Les composants web
Les composants Web Java EE sont des servlets ou des pages créés à l'aide
de la technologie JSP (pages JSP) et/ou de la technologie JavaServer Faces.
Les servlets sont des classes de langage de programmation Java qui traitent
dynamiquement les requêtes et construisent des réponses.
Dossiers et fichiers
personnels publiques,
accessibles par les
clients web
Dossiers et fichiers
Classes java compilées
personnels privés
Fichier de configuration
Déploiement et exécution d’une application JEE
Une servlet est un composant logiciel, utilisé dans un serveur web, tel que
Tomcat, qui peut être invoqué par les navigateurs clients via une URL.
Le protocole de communication est dans ce cas HTTP.
Elle est exécutée à l’intérieur du conteneur web ou un moteur de servlet qui
permet d’établir le lien entre la servlet et le serveur web.
Qu’est ce qu’une Servlet ?
La servlet est invoquée lorsque des requêtes HTTP utilisateur sont soumises
au serveur et elle génère une réponse, éventuellement en utilisant la logique
métier contenue dans des EJBs ou en interrogeant directement une base de
données. Elle retourne alors une réponse HTML ou XML au demandeur.
Qu’est ce qu’une Servlet ?
Une servlet doit implémenter l’interface javax.servlet.Servlet soit
directement, soit en dérivant d’une classe implémentant cette interface
comme : javax.servlet.GenericServlet ou javax.servlet.http.HttpServlet.
Le cycle de vie d’une Servlet
1. La servlet est créée puis initialisée (init()): cette
méthode n’est appelée par le serveur qu’une seule
fois lors du chargement;
http://localhost:8080/CoursServlet/MyServlet
HEAD
La méthode HEAD demande une réponse identique à une requête GET pour
laquelle on aura omis le corps de la réponse (on a uniquement l'en-tête).
POST
La méthode POST est utilisée pour envoyer une entité vers la ressource indiquée.
Cela entraîne généralement un changement d'état ou des effets de bord sur le
serveur.
Méthodes des requêtes Http
PUT
La méthode PUT remplace toutes les représentations actuelles de la ressource
visée par le contenu de la requête (modification).
DELETE
La méthode DELETE supprime la ressource indiquée.
OPTIONS
La méthode OPTIONS est utilisée pour décrire les options de communications avec
la ressource visée.
TRACE
La méthode TRACE réalise un message de test aller/retour en suivant le chemin de
la ressource visée.
PATCH
La méthode PATCH est utilisée pour appliquer des modifications partielles à une
ressource.
Les Servlets Http
Pour faciliter le traitement particulier des requêtes web, la classe Servlet est
affinée en javax.servlet.http.HttpServlet.
HttpServletRequest
HttpServletResponse
Les Servlets Http
Il faut utiliser ces deux objets comme paramètres des méthodes doGet() ou
doPost() pour implémenter le service.
La méthode doGet()
Une requête de type GET est utile avec des liens. Par exemple :
<A HREF="http://localhost:8080/examples/servlet/tomcat1.MyHelloServlet">test
de la servlet</A>
Dans une servlet de type HttpServlet, une telle requête est associée à la
méthode doGet().
request.getRequestDispatcher("link.html").include(request, response);
HttpSession session=request.getSession();
session.invalidate();
out.close();
}
}
L’interface HttpSession
<?xml version="1.0" encoding="UTF-8"?>
Fichier web.xml:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" Suite du fichier
version="2.5"> web.xml
<servlet>
<description></description>
<display-name>LoginServlet</display-name> <servlet>
<servlet-name>LoginServlet</servlet-name> <description></description>
<servlet-class>LoginServlet</servlet-class> <display-name>LogoutServlet</display-name>
</servlet> <servlet-name>LogoutServlet</servlet-name>
<servlet-mapping> <servlet-class>LogoutServlet</servlet-class>
<servlet-name>LoginServlet</servlet-name> </servlet>
<url-pattern>/LoginServlet</url-pattern> <servlet-mapping>
</servlet-mapping> <servlet-name>LogoutServlet</servlet-name>
<url-pattern>/LogoutServlet</url-pattern>
</servlet-mapping>
</web-app>
Redirection ou inclusion d’une ressource
Un objet de type RequestDispatcher est obtenu en invoquant la méthode
getRequestDispatcher(String) de la requête.
Le chemin qui lui est passé en paramètre est un chemin relatif ou absolu, qui doit
correspondre à une ressource se trouvant dans la même application web.
La ressource désignée par ce chemin peut être statique (une image, ou un
fichier), ou dynamique (une servlet).
Cet objet expose deux méthodes :
- Forward (): elle redirige la requête vers la ressource désignée,
- Include (): elle inclut cette ressource dans la réponse courante.
Ces deux méthodes prennent en paramètre la requête et la réponse courantes.
Redirection ou inclusion d’une ressource
Exercice 1.
Ecrire une servlet qui affiche la date courante. Effectuer cette tâche à l’aide la classe
Date et du package java.util.*, sans oublier de modifier le fichier web.xml.
Exercices d’application
Corrigé Exercice 1.
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
out.println(docType +
"<html>\n" +
"<head><title>" + title + "</title></head>\n" +
"<body bgcolor = \"#f0f0f0\">\n" +
"<h1 align = \"center\">" + title + "</h1>\n" +
"<h2 align = \"center\">" + date.toString() + "</h2>\n" +
"</body>
</html>"
);
}
}
Exercices d’application
Exercice 2.
Nous allons utiliser une servlet pour traiter les données saisies via une page html :
• Ecrire une page html pour saisir le nom et le mot de passe de l’internaute.
• Ecrire une servlet qui affiche le nom et le mot de passe saisie auparavant (cette
servlet est l’action à exécuter une fois le formulaire de saisie rempli).